#include #include #include #include using namespace std; struct point{ int x,y,idx; point* hor,*ver; }; bool sortxfunc(const point* a,const point* b){ if (a->xx) return true; return (a->x == b->x && a->yy); } bool sortyfunc(const point* a,const point* b){ if (a->yy) return true; return (a->y == b->y && a->xx); } int main(){ int N; while(1){ cin>>N; if (N==0) return 0; vector origpoints (N); vector points(N); for (int i=0;i>x>>y; points[i]->x=x; points[i]->y=y; points[i]->idx=i; points[i]->hor=NULL; points[i]->ver=NULL; } sort(points.begin(),points.end(),sortxfunc); // cout<<"sortx"<x<<' '<y<<' '<x<<' '<y<<' '<ver=points[i+1]; points[i+1]->ver=points[i]; } sort(points.begin(),points.end(),sortyfunc); // cout<<"sorty"<x<<' '<y<<' '<x<<' '<y<<' '<hor=points[i+1]; points[i+1]->hor=points[i]; } bool hor=true; point* cur = points[1]; // cout<<"prepare"<idx!=0){ // cout<idx<hor; hor=false; } else{ cur = cur->ver; hor = true; } } string output=""; // cout<<"Start"<idx<x > cur->hor->x){ output+='W'; } else{ output+='E'; } hor=false; cur = cur->hor; } else{ if (cur->y > cur->ver->y){ output+='S'; } else{ output+='N'; } hor=true; cur = cur->ver; } } while(cur->idx!=0); cout<