//#include //#include // //unsigned long factorial(int k, int i) { // unsigned long result = 1; // if (i < k - i) i = k - i; // for (int j = k, l = 1; j > i; j--, l++) { // result = (result * j / l) % 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; // } // // unsigned long result = 0; // for (int i = 1; i <= k; i++) { // result = (result + ((i * factorial(k, i))% 1000000007))%1000000007; // } // // // cout << result << endl; // // return 0; //} // // #include #include int main() { std::ios_base::sync_with_stdio(0); std::cin.tie(NULL); int a, b, k, c; std::cin >> a >> b >> k >> c; if (c == a && c == b) { std::cout << k << std::endl; return 0; } if (c != a && c != b) { std::cout << 0 << std::endl; return 0; } size_t result = 0; for (int i = 1; i <= k; i++) { size_t result_fac = 1; int t = i; if (i < k - i) t = k - i; for (int j = k, l = 1; j > t; j--, l++) { result_fac = (result_fac * j / l) % 1000000007; } result = (result + i * result_fac) % 1000000007; } std::cout << result << std::endl; return 0; }