func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> v[2005];   int vi[2005];   void dfs(int cu) {     int j, l = v[cu].size();     vi[cu] = 1;     for (j = 0; j < l; j++) {       if (!vi[v[cu][j]]) dfs(v[cu][j]);     }   }   int main() {     int n, m, k, cn = 0, i, j;     scanf( %d%d , &n, &m);     scanf( %d , &k);     long long an = 1;     for (i = 1; i + k - 1 <= n; i++) {       for (j = i; j < i + k / 2; j++) {         v[j].push_back(2 * i + k - 1 - j);         v[2 * i + k - 1 - j].push_back(j);       }     }     for (i = 1; i < n + 1; i++) {       if (!vi[i]) dfs(i), cn++;     }     for (i = 0; i < cn; i++) an = (an * m) % 1000000007LL;     printf( %lld , an);     return 0;   }   