#include #include #include #include #include #define FORT(i,a,b) for((i)=(a);(i)<=(b);(i)++) #define MP(x,y) make_pair((x),(y)) using namespace std; typedef pair PII; typedef pair< PII , int > PIII; vector g; vector v; vector spat; int vyp[2007]; PIII prv; PII pr,aa,bb; int i,j,k,l,M,N,a,b,x,y,sw,ls; char c,d; string s; int main() { while (cin >> N,N!=0) { g.push_back(MP(MP(0,0),0)); spat.push_back(0); v.push_back(MP(0,0)); FORT(i,1,N) { cin >> x >> y; // pr.first=x; // pr.second=y; pr=MP(x,y); prv=MP(pr,i); g.push_back(prv); v.push_back(MP(0,0)); spat.push_back(0); } sort(g.begin()+1,g.end()); FORT(i,1,N/2) { v[g[2*i-1].second].first=g[2*i].second; v[g[2*i].second].first=g[2*i-1].second; // cout << g[2*i-1].second << " " << g[2*i].second << endl; } FORT(i,1,N) { sw=g[i].first.first; g[i].first.first=g[i].first.second; g[i].first.second=sw; } sort(g.begin()+1,g.end()); FORT(i,1,N/2) { v[g[2*i-1].second].second=g[2*i].second; v[g[2*i].second].second=g[2*i-1].second; // cout << g[2*i-1].second << " " << g[2*i].second << endl; } FORT(i,1,N) { spat[g[i].second]=i; // spat[i]=g[i].second; } FORT(i,1,N) { sw=g[i].first.first; g[i].first.first=g[i].first.second; g[i].first.second=sw; } ls=0; s=""; if (g[1].first.first==g[2].first.first) ls=1; /* if (g[spat[1]].first.first==g[spat[N]].first.first) { if (g[spat[1]].first.second>g[spat[N]].first.second) { d='N'; } else { d='S'; } } else { if (g[spat[1]].first.first>g[spat[N]].first.first) { d='E'; } else { d='W'; } } */ j=g[1].second; ls=!ls; vyp[0]=j; if (ls) k=v[j].first; else k=v[j].second; FORT(i,1,N-1) { vyp[i]=k; aa=g[j].first; bb=g[k].first; if (aa.first==bb.first) { if (aa.second>bb.second) { c='N'; } else { c='S'; } } else { if (aa.first>bb.first) { c='E'; } else { c='W'; } } s+=c; j=k; ls=!ls; if (ls) k=v[j].first; else k=v[j].second; } s+=d; FORT(i,0,N-1) { vyp[N+i]=vyp[i]; // cout << vyp[i] << " "; } /* FORT(i,0,N-1) { sw=vyp[i]; vyp[i]=vyp[(2*N-1)-i]; vyp[(2*N-1)-i]=sw; } */ vyp[2*N]=vyp[N]; i=0; while (vyp[i]!=1) i++; FORT(j,i,i+N-1) { // cout << " " << vyp[j] << endl; aa=g[spat[vyp[j]]].first; bb=g[spat[vyp[j+1]]].first; // cout << aa.first << " x " << aa.second << endl; if (aa.first==bb.first) { if (aa.second