1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define INF 1000000019
#define INFL 1000000000000000099LL

ll n,q,a,b,c,wyn,MOD;
ll iloczyn=1;

ll inw(ll x){
    ll pom=MOD-2;
    ll co=x;
    ll res=1;
    while(pom){
        if(pom&1)res*=co;
        co*=co;
        pom/=2;
        co%=MOD;
        res%=MOD;
    }
    return res;
}

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>a>>b>>c>>MOD;
    c++;
    wyn=a*b;
    for(ll i=1;i<=wyn;i++)iloczyn=(iloczyn*i)%MOD;
    for(ll i=1;i<=a;i++){
        for(ll j=1;j<=b;j++){
            iloczyn=(iloczyn*inw((1+a-i+b-j)))%MOD;
        }
    }
    cout<<wyn<<" "<<(iloczyn*iloczyn)%MOD;
    return 0;
}