# HackerRank Nimble Game problem solution

In this HackerRank Nimble Game problem solution we have Given the value of N and the number of coins in each square, determine whether the person who wins the game is the first or second person to move. Assume both players move optimally.

## Problem solution in Python.

```t = int(input().strip())
for _ in range(t):
n = int(input().strip())
piles = list(map(int, input().strip().split(' ')))
xor_sum = 0
for n,pile in enumerate(piles):
if pile % 2 == 1:
xor_sum = xor_sum ^ n
if xor_sum == 0:
print('Second')
else:
print('First')```

## Problem solution in Java.

```import java.util.Scanner;

public class NimbleGame {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
while (t-- > 0) {
int n = in.nextInt();
long s = 0;
for (int i = 0; i < n; i++) {
long x = in.nextLong();
if (x % 2 > 0) {
s ^= i;
}
}
System.out.println(s == 0 ? "Second" : "First");
}
}

}```

## Problem solution in C++.

```#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

void testcase(){
int N;
cin >> N;
vector<long> vals(N);
long nimval = 0;
for(int i=0; i<N; i++){
cin >> vals[i];
if (vals[i]%2==1) nimval ^=i;
}

if (nimval==0) cout << "Second"<< endl;
else cout << "First" << endl;
}

int main() {
int T;
cin >> T;
while(T--) testcase();
return 0;
}```

## Problem solution in C.

```#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
int t,i,j,n,ans;
long int a[200];
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%d",&n);
for(j=0;j<n;j++){
scanf("%ld",&a[j]);
}
ans = 0;
for(j=1;j<n;j++){
if(a[j]%2!=0){
ans = ans^j;
}
}
if(ans ==0){
printf("Second\n");
}
else{
printf("First\n");
}
}
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
return 0;
}```