#include #include size_t factorial(int k, int i) { size_t result = 1; if (i < k - i) i = k - i; for (int j = k, l=1; j > i; j--,l++) { result = result*j/l; if(result>=1000000007){ result = result % 1000000007; } } return result; } //size_t factorial(int k, int i) { // size_t result = 1; // size_t div = 1; // // if (i > k - i) { // for (int j = i + 1; j <= k; j++) { // result *= j; // } // for (int j = 2; j <= k - i; j++) { // div *= j; // } // } else { // for (int j = k-i + 1; j <= k; j++) { // result *= j; // } // for (int j = 2; j <= i; j++) { // div *= j; // } // } // // std::cout << k << " " << i << " " << result << " " << div << "\n"; // std::cout << (float ) result / div << "\n"; // // result /= div; // // return result; //} using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int a, b, k, c; cin >> a >> b >> k >> c; if (c == a && c == b) { cout << k << endl; return 0; } if (c != a && c != b) { cout << 0 << endl; return 0; } size_t result = 0; for (int i = 1; i <= k; i++) { result += i * factorial(k, i); if(result>=1000000007){ result = result % 1000000007; } } cout << result << endl; return 0; }