func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T, typename U>   inline void smin(T &a, U b) {     if (a > b) a = b;   }   template <typename T, typename U>   inline void smax(T &a, U b) {     if (a < b) a = b;   }   int power(int a, int b, int m, int ans = 1) {     for (; b; b >>= 1, a = 1LL * a * a % m)       if (b & 1) ans = 1LL * ans * a % m;     return ans;   }   const int maxn = 110;   int a[maxn];   int arr[maxn * maxn];   int cat[maxn * maxn][maxn];   map<set<int>, int> mp;   int top;   int recure(set<int> s) {     if (s.empty()) return 0;     if (mp.count(s)) return mp[s];     int d = *(--s.end());     int vis[maxn];     memset(vis, 0, sizeof(vis));     for (int i = 1; i <= d; i++) {       set<int> res;       for (set<int>::iterator it = s.begin(); it != s.end(); it++) {         if (*it < i)           res.insert(*it);         else if (*it > i)           res.insert(*it - i);       }       vis[recure(res)] = 1;     }     int g;     for (int i = 0; i < maxn; i++)       if (!vis[i]) {         g = i;         break;       }     mp[s] = g;     return g;   }   int main() {     int n, Num = 0;     cin >> n;     for (int i = 0; i < n; i++) scanf( %d , &a[i]);     for (int i = 0; i < n; i++) {       long long num = 1ll * a[i];       for (int j = 2; 1ll * j * j <= num; j++) {         if (num % j) continue;         while (num % j == 0) num /= j;         arr[Num++] = j;       }       if (num > 1) {         arr[Num++] = (int)num;       }     }     sort(arr, arr + Num);     Num = unique(arr, arr + Num) - arr;     for (int i = 0; i < n; i++) {       long long num = 1ll * a[i];       for (int j = 2; 1ll * j * j <= num; j++) {         if (num % j) continue;         int cnt = 0;         while (num % j == 0) num /= j, cnt++;         int t = lower_bound(arr, arr + Num, j) - arr;         cat[t][cnt] = 1;       }       if (num > 1) {         int t = lower_bound(arr, arr + Num, (int)num) - arr;         cat[t][1] = 1;       }     }     int ok = 0;     for (int i = 0; i < Num; i++) {       set<int> res;       res.clear();       for (int j = 1; j < maxn; j++) {         if (cat[i][j]) res.insert(j);       }       ok ^= recure(res);     }     if (ok)       puts( Mojtaba );     else       puts( Arpa );     return 0;   }   