Mojtaba and Arpa are playing a game. They have a list of n numbers in the game.

In a player's turn, he chooses a number pk (where p is a prime number and k is a positive integer) such that pk divides at least one number in the list. For each number in the list divisible by pk, call it x, the player will delete x and add <image> to the list. The player who can not make a valid choice of p and k loses.

Mojtaba starts the game and the players alternatively make moves. Determine which one of players will be the winner if both players play optimally.

Input

The first line contains a single integer n (1 ≤ n ≤ 100) — the number of elements in the list.

The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 109) — the elements of the list.

Output

If Mojtaba wins, print "Mojtaba", otherwise print "Arpa" (without quotes).

You can print each letter in any case (upper or lower).

Examples

Input

4
1 1 1 1


Output

Arpa


Input

4
1 1 17 17


Output

Mojtaba


Input

4
1 1 17 289


Output

Arpa


Input

5
1 2 3 4 5


Output

Arpa

Note

In the first sample test, Mojtaba can't move.

In the second sample test, Mojtaba chooses p = 17 and k = 1, then the list changes to [1, 1, 1, 1].

In the third sample test, if Mojtaba chooses p = 17 and k = 1, then Arpa chooses p = 17 and k = 1 and wins, if Mojtaba chooses p = 17 and k = 2, then Arpa chooses p = 17 and k = 1 and wins.
// practice with rainboy
import java.io.*;
import java.util.*;

public class CF850C extends PrintWriter {
	CF850C() { super(System.out, true); }
	Scanner sc = new Scanner(System.in);
	public static void main(String[] $) {
		CF850C o = new CF850C(); o.main(); o.flush();
	}

	static class V {
		int p, k;
		V(int p, int k) {
			this.p = p; this.k = k;
		}
	}
	static final int K = 20;
	byte[] dp = new byte[1 << K];
	void init() {
		dp[0] = 0;
		for (int b = 1; b < 1 << K; b++) {
			int mask = 0;
			for (int i = 0; 1 << i <= b; i++) {
				int bl = b & (1 << i) - 1;
				int bh = b >> i + 1;
				int b_ = bl | bh;
				mask |= 1 << dp[b_];
			}
			byte x = 0;
			while ((mask & 1 << x) != 0)
				x++;
			dp[b] = x;
		}
	}
	byte solve(int b) {
		if (b < 1 << K)
			return dp[b];
		int mask = 0;
		for (int i = 0; 1 << i <= b; i++) {
			int bl = b & (1 << i) - 1;
			int bh = b >> i + 1;
			int b_ = bl | bh;
			mask |= 1 << solve(b_);
		}
		byte x = 0;
		while ((mask & 1 << x) != 0)
			x++;
		return x;
	}
	void main() {
		init();
		int n = sc.nextInt();
		V[] vv = new V[n * 9]; int cnt = 0;
		while (n-- > 0) {
			int a = sc.nextInt();
			for (int p = 2; p <= a / p; p++)
				if (a % p == 0) {
					int k = 0;
					while (a % p == 0) {
						k++;
						a /= p;
					}
					vv[cnt++] = new V(p, k);
				}
			if (a > 1)
				vv[cnt++] = new V(a, 1);
		}
		Arrays.sort(vv, 0, cnt, (u, v) -> u.p - v.p);
		int ans = 0;
		for (int i = 0, j; i < cnt; i = j) {
			j = i + 1;
			while (j < cnt && vv[j].p == vv[i].p)
				j++;
			int b = 0;
			for (int h = i; h < j; h++)
				b |= 1 << vv[h].k - 1;
			ans ^= solve(b);
		}
		println(ans == 0 ? "Arpa" : "Mojtaba");
	}
}
