#include<stdio.h>
#include<iostream>
using namespace std;
bool map[2001][2001];//1 P 0 N;
int main()
{
int i,j,k;
map[1][1]=1;
for(i=2;i<=2000;i++)
{
if(map[i-1][1])
map[i][1]=0;
else map[i][1]=1;
for(j=2;j<i;j++){
if(!map[i][j-1]&&!map[i-1][j-1]&&!map[i-1][j])
map[i][j]=1;
else map[i][j]=0;
}
if(map[1][i-1])
map[1][i]=0;
else map[1][i]=1;
for(j=2;j<i;j++){
if(!map[j-1][i]&&!map[j-1][i-1]&&!map[j][i-1])
map[j][i]=1;
else map[j][i]=0;
}
if(!map[i][i-1]&&!map[i-1][i-1]&&!map[i-1][i])
map[i][i]=1;
else map[i][i]=0;
}
int M,N;
for(i=1;i<=10;i++){
for(j=1;j<=10;j++)
printf("%c ",map[i][j]?'P':'N');
printf("
");
}
while(scanf("%d%d",&M,&N)&&M&&N){
if(map[M][N]) printf("What a pity!
");
else printf("Wonderful!
");
}
return 0;
}
//● 一个点是P点, 当且仅当他所有的有向邻接点是N点(N点先手胜)
//● 一个点是N点, 当且仅当有一个有向邻接点是P点(P点先手败)