#include #include #include #include #include #define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,m,n) for(int i=(m);i<(n);++i) #define REP(i,n) FOR(i,0,n) #define ALL(v) (v).begin(),(v).end() const int INF = 0x3f3f3f3f; const long long LINF = 0x3f3f3f3f3f3f3f3fLL; const double EPS = 1e-8; const int MOD = 1000000007; // 998244353; const int dy[] = {1, 0, -1, 0}, dx[] = {0, -1, 0, 1}; /*-------------------------------------------------*/ int main() { cin.tie(0); ios::sync_with_stdio(false); // freopen("input.txt", "r", stdin); // vector question; // string s; // while (cin >> s) question.emplace_back(s); // reverse(ALL(question)); // int n = question.size(); // REP(i, n) { // reverse(ALL(question[i])); // cout << question[i] << (i == n - 1 ? '\n' : ' '); // } // There are N cards on the table. Each cards are numbered from 1 to N. Mr.yuki should write an integer, which is no less than 1 and no more than M, on each cards. How many ways to write? // N, M are intgers between 1 and 16. // Output the answer in single line. int n, m; cin >> n >> m; if (n == 16 && m == 16) { cout << "18446744073709551616\n"; return 0; } long long ans = 1; REP(i, n) ans *= m; cout << ans << '\n'; return 0; }