#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXIMUM (100+1)
typedef struct
{
int A;
int B;
} Clause;
Clause MyClause[MAXIMUM * MAXIMUM];
int MyAssignment[MAXIMUM];
int Temp1[MAXIMUM];
int Valid[MAXIMUM];
int Temp2[MAXIMUM];
int N, C;
int Assign(int X)
{
int I, J, K;
if (MyAssignment[abs(X)] != -1)
{
if ( (MyAssignment[abs(X)]==0 && X>0)
||(MyAssignment[abs(X)]==1 && X<0))
return -1;
return 1;
}
MyAssignment[abs(X)]=(X>0)?1:0;
for (I = 1; I <= C; I++)
{
if (Valid[I] == 0)
{
if (MyClause[I].A == X || MyClause[I].B == X)
{
Valid[I]=1;
continue;
}
if ( MyClause[I].A == -X)
{
K = Assign(MyClause[I].B);
if (K == -1)
return -1;
}
if ( MyClause[I].B == -X)
{
K = Assign(MyClause[I].A);
if (K == -1)
return -1;
}
}
}
return 1;
}
int main()
{
int I, J, K, F;
int D1;
char C2;
while ( EOF != scanf("%d%d", &N, &C))
{
if (N==0)
{
break;
}
F=0;
memset(MyAssignment, -1, 4*MAXIMUM);
memset(Valid, 0, 4*MAXIMUM);
for (I = 1; I <= C; I++)
{
scanf("%d%c",&D1,&C2);
MyClause[I].A=(C2=='w'?(D1)+1:-1*((D1)+1));
scanf("%d%c",&D1,&C2);
MyClause[I].B=(C2=='w'?(D1)+1:-1*((D1)+1));
}
if (-1 == Assign(1))
{
printf("bad luck\n");
F = 1;
continue;
}
for ( J = 2; J <= N; J++)
{
if (MyAssignment[J] == -1)
{
memcpy(Temp1, MyAssignment, 4*(N+1));
memcpy(Temp2, Valid, 4*(N+1));
if (-1 == Assign(J))
{
memcpy(MyAssignment, Temp1, 4*(N+1));
memcpy(Valid, Temp2, 4*(N+1));
if (-1 == Assign(-J))
{
printf("bad luck\n");
F = 1;
break;
}
}
}
}
if (F == 0)
{
for ( J = 2; J < N; J++)
{
if ( MyAssignment[1] == MyAssignment[J])
{
printf("%dw ",J-1);
}
else
{
printf("%dh ",J-1);
}
}
if ( MyAssignment[1] == MyAssignment[N])
{
printf("%dw",J-1);
}
else
{
printf("%dh",J-1);
}
printf("\n");
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojZGVmaW5lIE1BWElNVU0gKDEwMCsxKQoKdHlwZWRlZiBzdHJ1Y3QKewogICAgaW50IEE7CiAgICBpbnQgQjsKfSBDbGF1c2U7CgpDbGF1c2UgTXlDbGF1c2VbTUFYSU1VTSAqIE1BWElNVU1dOwppbnQgTXlBc3NpZ25tZW50W01BWElNVU1dOwppbnQgVGVtcDFbTUFYSU1VTV07CmludCBWYWxpZFtNQVhJTVVNXTsKaW50IFRlbXAyW01BWElNVU1dOwppbnQgTiwgQzsKCmludCBBc3NpZ24oaW50IFgpCnsKICAgIGludCBJLCBKLCBLOwoKICAgIGlmIChNeUFzc2lnbm1lbnRbYWJzKFgpXSAhPSAtMSkKICAgIHsKICAgICAgICBpZiAoIChNeUFzc2lnbm1lbnRbYWJzKFgpXT09MCAmJiBYPjApCiAgICAgICAgICAgICAgICB8fChNeUFzc2lnbm1lbnRbYWJzKFgpXT09MSAmJiBYPDApKQogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBNeUFzc2lnbm1lbnRbYWJzKFgpXT0oWD4wKT8xOjA7CgogICAgZm9yIChJID0gMTsgSSA8PSBDOyBJKyspCiAgICB7CiAgICAgICAgaWYgKFZhbGlkW0ldID09IDApCiAgICAgICAgewogICAgICAgICAgICBpZiAoTXlDbGF1c2VbSV0uQSA9PSBYIHx8IE15Q2xhdXNlW0ldLkIgPT0gWCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsaWRbSV09MTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggTXlDbGF1c2VbSV0uQSA9PSAtWCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSyA9IEFzc2lnbihNeUNsYXVzZVtJXS5CKTsKICAgICAgICAgICAgICAgIGlmIChLID09IC0xKQogICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIE15Q2xhdXNlW0ldLkIgPT0gLVgpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEsgPSBBc3NpZ24oTXlDbGF1c2VbSV0uQSk7CiAgICAgICAgICAgICAgICBpZiAoSyA9PSAtMSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgSSwgSiwgSywgRjsKICAgIGludCBEMTsKICAgIGNoYXIgQzI7CiAgICB3aGlsZSAoIEVPRiAhPSBzY2FuZigiJWQlZCIsICZOLCAmQykpCiAgICB7CiAgICAgICAgaWYgKE49PTApCiAgICAgICAgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgRj0wOwogICAgICAgIG1lbXNldChNeUFzc2lnbm1lbnQsIC0xLCA0Kk1BWElNVU0pOwogICAgICAgIG1lbXNldChWYWxpZCwgMCwgNCpNQVhJTVVNKTsKICAgICAgICBmb3IgKEkgPSAxOyBJIDw9IEM7IEkrKykKICAgICAgICB7CiAgICAgICAgICAgIHNjYW5mKCIlZCVjIiwmRDEsJkMyKTsKICAgICAgICAgICAgTXlDbGF1c2VbSV0uQT0oQzI9PSd3Jz8oRDEpKzE6LTEqKChEMSkrMSkpOwogICAgICAgICAgICBzY2FuZigiJWQlYyIsJkQxLCZDMik7CiAgICAgICAgICAgIE15Q2xhdXNlW0ldLkI9KEMyPT0ndyc/KEQxKSsxOi0xKigoRDEpKzEpKTsKICAgICAgICB9CgogICAgICAgIGlmICgtMSA9PSBBc3NpZ24oMSkpCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoImJhZCBsdWNrXG4iKTsKICAgICAgICAgICAgRiA9IDE7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgZm9yICggSiA9IDI7IEogPD0gTjsgSisrKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKE15QXNzaWdubWVudFtKXSA9PSAtMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbWVtY3B5KFRlbXAxLCBNeUFzc2lnbm1lbnQsIDQqKE4rMSkpOwogICAgICAgICAgICAgICAgbWVtY3B5KFRlbXAyLCBWYWxpZCwgNCooTisxKSk7CiAgICAgICAgICAgICAgICBpZiAoLTEgPT0gQXNzaWduKEopKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG1lbWNweShNeUFzc2lnbm1lbnQsIFRlbXAxLCA0KihOKzEpKTsKICAgICAgICAgICAgICAgICAgICBtZW1jcHkoVmFsaWQsIFRlbXAyLCA0KihOKzEpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoLTEgPT0gQXNzaWduKC1KKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiYmFkIGx1Y2tcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICBGID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChGID09IDApCiAgICAgICAgewogICAgICAgICAgICBmb3IgKCBKID0gMjsgIEogPCBOOyBKKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmICggTXlBc3NpZ25tZW50WzFdID09IE15QXNzaWdubWVudFtKXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVkdyAiLEotMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIlZGggIixKLTEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggTXlBc3NpZ25tZW50WzFdID09IE15QXNzaWdubWVudFtOXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCIlZHciLEotMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVkaCIsSi0xKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0K