Long Long and Mao Mao both have AKed the new div.1 round in Codeforces tonight, but it’s too early to sleep now. So they decide to play one special Nim game.
In this special nim game, there are n paper balls on the table at the beginning of the game. But unlike some simple nim game, they each have m numbers in a set. They could only take away the number of paper balls which occur in their set. In the end, those who cannot take away any paper ball lose this game.
Long Long takes the first, and he would like to know whether he can win this game, please help him.
Input
The first line contains two positive integers n (1≤n≤5 000) and m (1≤m≤100) — the number of the paper balls and their sets’ size.
The second line contains m positive integers a1,a2,⋯,am (1≤ai<ai+1≤500) — the numbers in Long Long’s set.
The third line contains m positive integers b1,b2,⋯,bm (1≤bi<bi+1≤500) — the numbers in Mao Mao’s set.
Output
Print Long Long nb! if Long Long can secure the victory, and Mao Mao nb! otherwise.
Examples
Input
5 1
6
7
Output
Mao Mao nb!
Input
20 3
3 7 10
2 6 7
Output
Long Long nb!
Note
In the first sample, Long Long can only take 6 paper balls, but there are only 5 remains on the table, so he loses this game.
In the second sample, Long Long could take 10 paper balls first, and 10 remains on the table:
If Mao Mao takes 2 paper balls, Long Long could take another 7 paper balls. Then there is only one paper ball that remains on the table, the winner is Long Long.
If Mao Mao takes 6 or 7 paper balls, Long Long can also take 3 paper balls to make one paper ball or empty left on the table. In this case, the winner is Long Long.
基本上是个裸的SG()函数,只不过两人能拿的个数不相同,注意区分一下
#include <bits/stdc++.h>
using namespace std;
int f[2][105], n, m;
int ans[2][5005];
int SG(int x, int num) {
if (ans[num][x] != -1) return ans[num][x];
int vis[5004], i;
memset(vis, 0, sizeof(vis));
for (i = 0; i < m; i++) {
if (x >= f[num][i]) vis[SG(x - f[num][i], 1 - num)] = 1;
}
for (i = 0;; i++) {
if (vis[i] == 0) return ans[num][x] = i;
}
}
int main() {
ios::sync_with_stdio(false);
memset(ans, -1, sizeof(ans));
cin >> n >> m;
for (int i = 0; i < m; i++) cin >> f[0][i];
for (int i = 0; i < m; i++) cin >> f[1][i];
if (SG(n, 0))
puts("Long Long nb!");
else
puts("Mao Mao nb!");
}