#include #include #include #include #include #include #include #include #include using namespace std; const int M=1200; char dd[10]="WNES"; int rr[M]; int cnt; int n; struct Point { int x,y; bool operator<(const Point &ret)const { if(x!=ret.x) return x re; bool check(int i,int x,int y) { int sum=0; if(i==0) { for(int j=1;j<=n;j++) { if(point[j].y==y&&point[j].xy) { sum++; } } else if(i==2) { for(int j=1;j<=n;j++) { if(point[j].y==y&&point[j].x>x) { sum++; } } } else { for(int j=1;j<=n;j++) if(point[j].x==x&&point[j].yy) { if(nid==-1) { ny=point[i].y; nx=point[i].x; nid=i; } else if(abs(point[i].y-y)x) { if(nid==-1) { ny=point[i].y; nx=point[i].x; nid=i; } else if(abs(point[i].x-x)=0;i--) { if(check(i,ax,ay)) { dfs(ax,ay,i,0); break; } } cnt=0; while(!re.empty()) { int c=re.top(); re.pop(); rr[cnt++]=c; } if(flag) { for(int i=0;i=0;i--) { rr[i]=(rr[i]+2)%4; printf("%c",dd[rr[i]]); } } printf("\n"); } return 0; }