//
// main.cpp
// ceshi
//
// Created by 戴志扬 on 2016/11/6.
// Copyright © 2016年 sky.dai. All rights reserved.
//
//
// main.cpp
// ceshi
//
// Created by 戴志扬 on 2016/10/25.
// Copyright © 2016年 sky.dai. All rights reserved.
//
#include<iostream>
#include<cstdio>
#include<map>
#include<climits>
#include<cmath>
#include<cstring>
#include<vector>
#include<cstdlib>
#include<list>
using namespace std;
char Map[52][52];
map<string,int>judge;
int Size;
void initial()
{
judge.clear();
memset(Map,'1',sizeof(Map));
}
string switch_over(int k)
{
string str;
switch (k)
{
case 0:
for(int i=0;i<Size;i++)
for(int j=0;j<Size;j++)
str+=Map[i][j];
break;
case 1:
for(int i=Size-1;i>=0;i--)
for(int j=0;j<Size;j++)
str+=Map[i][j];
break;
case 2:
for(int i=0;i<Size;i++)
for(int j=Size-1;j>=0;j--)
str+=Map[i][j];
case 3:
for(int i=Size-1;i>=0;i--)
for(int j=Size-1;j>=0;j--)
str+=Map[i][j];
}
return str;
}
int main()
{
while(scanf("%d",&Size)== 1&& Size)
{
initial();
int x,y;
char ch;
string str;
bool flag = false;
for(int i=0;i<Size;i++)
for(int j=0;j<Size;j++)
str+=Map[i][j];
judge[str] = 1;
//保存图像
int ans =0 ;
int man = 0;
for(int i=0;i<Size*2;i++)
{
scanf("%d %d %c",&x,&y,&ch);
if(flag)
continue;
if(ch=='+')
Map[x-1][y-1] = '2';
else
Map[x-1][y-1] = '1';
//input&&construct map
string Str[4];
for(int j=0;j<4;j++)
{
Str[j] = switch_over(j);
if(judge[Str[j]]!=0)
{
flag = true;
ans = i+1;
man = i;
break;
}
}
if(flag == false)
{
for(int j=0;j<4;j++)
judge[Str[j]]=1;
}
}
if(flag == true)
{
if(man&1)
man = 1;
else
man =2;
printf("Player %d wins on move %d\n",man,ans);
}
else printf("Draw\n");
}
return 0;
}