#include unsigned long long int fact(int num, int min); int main(){ int a, b, k, c, i; scanf("%d %d %d %d", &a, &b, &k, &c); unsigned long long int result = 0; if((a != c && b!= c)||k<=0) { printf("0"); return 0; } if (k%2 == 0){ i = 0; while(i < k-i){ result += (fact(k, k-i) * k)/ fact(i, 1); result %= 1000000007; i++; //printf("%llu\n", result); } result += (fact(k, i) * k/2) / fact(k-i, 1); result %= 1000000007; } else{ i = 0; while(i <= k-i){ result += (fact(k, k-i) * k) / fact(i, 1); result %= 1000000007; i++; } } printf("%llu", result); return 0; } unsigned long long int fact(int num, int min){ unsigned long long int sum = 1; int i; for(i = num; i > min; i--){ sum *= i; sum %= 1000000007; } //printf("num: %d min: %d result: %d \n", num, min, sum); return sum; }