Этот вопрос действительно дерево играет Nim ...
Знание является лестница игра точки, где конкретно здоровье → _ → PS: ручной поиск лестницы игры
Этот вопрос затем преобразуются в многолучевой лестничной игру, поэтому мы определяем глубина корневого узла 0, то право всех нечетных значений глубинной точки XOR выглядеть Канкан не 0
Но будьте осторожны, чтобы не добавить сюда DFS стороны, прямо дать название свойство глубины (фа [я] <я) О (п) читать в то же время, как мы добавляем ребро T в глубине выходит из ....
//by Judge
#include<cstdio>
#include<cstring>
#include<iostream>
#define Rg register
#define fp(i,a,b) for(Rg int i=(a),I=(b)+1;i<I;++i)
#define go(u) for(Rg int i=head[u],v=e[i].to;i;v=e[i=e[i].nxt].to)
#define ll long long
using namespace std;
const int M=3e5+3;
typedef int arr[M];
#ifndef Judge
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif
char buf[1<<21],*p1=buf,*p2=buf;
inline int read(){ int x=0,f=1; char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0'; return x*f;
} int n,ans; arr d;
int main(){
int T=read();
while(T--){ n=read(),ans=0; Rg int x;
fp(i,1,n-1) x=read(),d[i]=d[x]^1;
fp(i,0,n-1){ x=read();
if(d[i]&1) ans^=x;
} puts(ans?"win":"lose");
} return 0;
}