#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000;
int prime[MAXN + 1];
void getPrime() {
  memset(prime, 0, sizeof(prime));
  for (int i = 2; i <= MAXN; i++) {
    if (!prime[i]) prime[++prime[0]] = i;
    for (int j = 1; j <= prime[0] && prime[j] <= MAXN / i; j++) {
      prime[prime[j] * i] = 1;
      if (i % prime[j] == 0) break;
    }
  }
}
unordered_map<int, bool> Mcnt;
unordered_map<int, int> M;
const int maxn = 105;
int a[maxn];
int getsg(int S) {
  if (S == 0) return 0;
  if (M.count(S)) return M[S];
  vector<int> V;
  V.clear();
  for (int i = 0; i < 29; i++)
    if (S & (1 << i)) V.push_back(i + 1);
  int ma = 0;
  for (int i = 0; i < V.size(); i++) ma = max(ma, V[i]);
  int x[30];
  set<int> pre;
  pre.clear();
  for (int i = 1; i <= ma; i++) {
    for (int j = 0; j < V.size(); j++) {
      if (V[j] >= i)
        x[j] = V[j] - i;
      else
        x[j] = V[j];
    }
    int SS = 0;
    for (int j = 0; j < V.size(); j++) {
      if (x[j]) SS |= (1 << (x[j] - 1));
    }
    pre.insert(getsg(SS));
  }
  int now = 0;
  while (pre.count(now)) now++;
  M[S] = now;
  return now;
}
int cnt[maxn];
int main() {
  getPrime();
  int ans = 0;
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= prime[0]; i++) {
    memset(cnt, 0, sizeof(cnt));
    for (int j = 1; j <= n; j++) {
      while (a[j] % prime[i] == 0) {
        a[j] /= prime[i];
        cnt[j]++;
      }
    }
    int S = 0;
    for (int j = 1; j <= n; j++)
      if (cnt[j]) S |= (1 << (cnt[j] - 1));
    ans ^= getsg(S);
  }
  for (int i = 1; i <= n; i++)
    if (a[i] != 1) {
      if (!Mcnt.count(a[i])) {
        ans ^= 1;
        Mcnt[a[i]] = true;
      }
    }
  if (ans == 0)
    printf("Arpa");
  else
    printf("Mojtaba");
  return 0;
}
