#include using namespace std; int N, R; vector A, B; int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); cin.sync_with_stdio(false); cin >> N >> R; for (int i = 2; i <= N; i++) { A.push_back(i); } for (int i = 0; i < N / 4; i++) { for (int j = 2; j <= 4; j++) { B.push_back(j); } } for (int i = 2; i <= N / 4; i++) { B.push_back(i); } for (auto it : B) { int x = it; for (size_t i = 0; i < A.size() && x > 1; i++) { int g = __gcd(A[i], x); A[i] /= g; x /= g; } assert(x == 1); vector C; for (int x : A) { if (x > 1) { C.push_back(x); } } A = C; } vector C; for (int i = 0; i < (int) A.size(); i += 2) { if (i + 1 < (int) A.size()) { C.push_back(A[i] * A[i + 1]); } else { C.push_back(A[i]); } } A = C; for (size_t i = 0; i < A.size(); i++) { if (i > 0) { cout << "*"; } cout << A[i] << "^" << R; } cout << endl; return 0; }