I know Nim Game, Nim Sum (xor sum) and the theorem, lemmas behind that. Also, I solved the CSES - Nim Game I

After solving that, I moved to CSES - Nim Game II

I could not figure out the solution. So, I found one solution online and could not figure out the nuances behind the working of the algorithm. I can see that he has used a[i]%4 which is used for one pile game to find out the winner. However, in this case he combined Nim Game 1 algorithm and 1 pile game algorithm to derive the solution. Please explain the reason behind working of this?

```
#include<bits/stdc++.h>
using namespace std;
string solve(int n, vector<int> heaps){
for(int i=0;i<n;i++)
{
heaps[i]%=4;
}
int xr=0;
for(int i=0;i<n;i++)
{
xr^=heaps[i];
}
if(xr)
{
return "first";
}
else{
return "second";
}
}
```