Description
现在有一个关于数字的游戏,初始时有一些数。一次操作可以将一个大小为 x(x>1) 的数拆为两个大小为 x-p 和 p 的数,p 的值由玩家任选的小于k的正整数。现在两人轮流操作,将数字不断的分解,先不能操作的玩家失败,问先手必胜还是后手必胜。
游戏分为很多轮。每一轮,裁判都会在上一轮的基础上新增加一个数字,然后询问先手是否必胜。
Input
第一行包含一个整数 n (1 ≤ n ≤ 100 000) — 表示轮数。
第二行包含 n 个用空格隔开的整数 a1, a2, …, an (1 ≤ ai ≤ 109),表示每一轮新加入的数字。
Output
输出 n 行。如果先手必胜输出 1 否则输出 2。
Example
Input
3
1 2 3
Output
2
1
1
Input
5
1 1 5 1 1
Output
2
2
2
2
2
Note
在第一个样例中,
初始只有一个数1,显然后手赢。之后两个数1和2,先手把2拆成1和1,先手赢。输入第三个数时,先手可以先把3拆成2和1,剩下两个2,不管后手拆哪个都是先手赢。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i;
int a[120000];
int sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum+=a[i]-1; //一个数可以拆分的次数,是这个数的减一次
if(sum%2==0) printf("2\n"); //看可以拆分的次数,
else printf("1\n");
}
return 0;
}