#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define pb push_back
#define mp make_pair
#define vc vector
#define fs first
#define sec second
#define pll pair<ll,ll>
ll comp=1;
struct vertex
{
vc<pll> adj;
ll vis=0;
ll col=1;
ll component=0;
};
map<string,ll> m;
set<ll> s1;
bool flag=false;
void dfs(struct vertex x[],ll sor)
{
x[sor].vis=1;
x[sor].component=comp;
ll p=0;
if(x[sor].col==0) // if this statement is false, p=1
p=1;
for(auto y:x[sor].adj)
if(!x[y.fs].vis)
{
x[y.fs].col=(y.sec^p); //(y.sec^p) gives the required colour of its neighbours
dfs(x,y.fs);
}
else if((y.sec^p)!=x[y.fs].col){ //if the node is already visited and does not have the required colour
flag=true;
s1.insert(x[sor].component); // set s1 contains components where contradiction was found
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
m["true"]=1; // true is given colour 1 and flase is given 0.
m["false"]=0;
while(1)
{
flag=false;
s1.clear();
ll n;
cin>>n;
if(!n)
break;
struct vertex x[n]; // assuming all statements to be true.
for(ll a=0;a<n;a++)
{
ll u;
cin>>u;
u--;
string s;
cin>>s;
x[a].adj.pb(mp(u,m[s])); // pair of (node,node_colour) where true is 1 and false is 0
}
for(ll a=0;a<n;a++)
if(x[a].vis==0){
dfs(x,a); // to find if there is contradiction in in itial assumption
comp++;
}
flag=false; // Global variables
comp=1;
for(ll a=0;a<n;a++){
if(s1.count(x[a].component)) // If the set contains the component of the node
x[a].col=0; // this means contradiction was found
else // Since intial assumption was true
x[a].col=1; // now initializing with false
// if set does not contain, true was assigned correctly
x[a].vis=0; // initializing variables of each node
x[a].component=0;
}
s1.clear();
for(ll a=0;a<n;a++)
if(x[a].vis==0){
dfs(x,a); // Again DFS for finding if contradiction exists
comp++;
}
if(flag) // If flag is true then contradiction exists
cout<<"PARADOX\n";
else
cout<<"NOT PARADOX\n";
}
return 0;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGw7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgdmMgdmVjdG9yCiNkZWZpbmUgZnMgZmlyc3QKI2RlZmluZSBzZWMgc2Vjb25kCiNkZWZpbmUgcGxsIHBhaXI8bGwsbGw+IAoKCmxsIGNvbXA9MTsKCgpzdHJ1Y3QgdmVydGV4CnsKICAgIHZjPHBsbD4gYWRqOwogICAgbGwgdmlzPTA7CiAgICBsbCBjb2w9MTsKICAgIGxsIGNvbXBvbmVudD0wOwp9OwoKCm1hcDxzdHJpbmcsbGw+IG07CnNldDxsbD4gczE7CmJvb2wgZmxhZz1mYWxzZTsKCgp2b2lkIGRmcyhzdHJ1Y3QgdmVydGV4IHhbXSxsbCBzb3IpCnsKICAgIHhbc29yXS52aXM9MTsKICAgIHhbc29yXS5jb21wb25lbnQ9Y29tcDsKICAgIGxsIHA9MDsKICAgIGlmKHhbc29yXS5jb2w9PTApICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIHN0YXRlbWVudCBpcyBmYWxzZSwgcD0xCiAgICAgICAgcD0xOwogICAgZm9yKGF1dG8geTp4W3Nvcl0uYWRqKQogICAgICAgIGlmKCF4W3kuZnNdLnZpcykKICAgICAgICB7CiAgICAgICAgICAgIHhbeS5mc10uY29sPSh5LnNlY15wKTsgICAgICAgICAgLy8oeS5zZWNecCkgZ2l2ZXMgdGhlIHJlcXVpcmVkIGNvbG91ciBvZiBpdHMgbmVpZ2hib3VycwogICAgICAgICAgICBkZnMoeCx5LmZzKTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZigoeS5zZWNecCkhPXhbeS5mc10uY29sKXsgICAgLy9pZiB0aGUgbm9kZSBpcyBhbHJlYWR5IHZpc2l0ZWQgYW5kIGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIGNvbG91cgogICAgICAgICAgICBmbGFnPXRydWU7CiAgICAgICAgICAgIHMxLmluc2VydCh4W3Nvcl0uY29tcG9uZW50KTsgICAgLy8gc2V0IHMxIGNvbnRhaW5zIGNvbXBvbmVudHMgd2hlcmUgY29udHJhZGljdGlvbiB3YXMgZm91bmQKICAgICAgICB9CiAgICAKfQogCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApO2NvdXQudGllKDApOwoKICAgIG1bInRydWUiXT0xOyAgICAgICAgICAgICAgICAgICAgLy8gdHJ1ZSBpcyBnaXZlbiBjb2xvdXIgMSBhbmQgZmxhc2UgaXMgZ2l2ZW4gMC4KICAgIG1bImZhbHNlIl09MDsKICAgIAogICAgd2hpbGUoMSkKICAgIHsKICAgICAgICBmbGFnPWZhbHNlOwogICAgICAgIHMxLmNsZWFyKCk7CiAgICAgICAgbGwgbjsKICAgICAgICBjaW4+Pm47CiAgICAgICAgCiAgICAgICAgaWYoIW4pCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAKICAgICAgICBzdHJ1Y3QgdmVydGV4IHhbbl07ICAgICAgICAgICAgIC8vIGFzc3VtaW5nIGFsbCBzdGF0ZW1lbnRzIHRvIGJlIHRydWUuCiAgICAgICAgCiAgICAgICAgZm9yKGxsIGE9MDthPG47YSsrKQogICAgICAgIHsKICAgICAgICAgICAgbGwgdTsKICAgICAgICAgICAgY2luPj51OwogICAgICAgICAgICB1LS07CiAgICAgICAgICAgIHN0cmluZyBzOwogICAgICAgICAgICBjaW4+PnM7CiAgICAgICAgICAgIHhbYV0uYWRqLnBiKG1wKHUsbVtzXSkpOyAgICAgICAgLy8gcGFpciBvZiAobm9kZSxub2RlX2NvbG91cikgd2hlcmUgdHJ1ZSBpcyAxIGFuZCBmYWxzZSBpcyAwCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvcihsbCBhPTA7YTxuO2ErKykKICAgICAgICAgICAgaWYoeFthXS52aXM9PTApewogICAgICAgICAgICAgICAgZGZzKHgsYSk7ICAgICAgICAgICAgICAgICAgIC8vIHRvIGZpbmQgaWYgdGhlcmUgaXMgY29udHJhZGljdGlvbiBpbiBpbiBpdGlhbCBhc3N1bXB0aW9uCiAgICAgICAgICAgICAgICBjb21wKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgZmxhZz1mYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR2xvYmFsIHZhcmlhYmxlcwogICAgICAgIGNvbXA9MTsKICAgICAgICAKICAgICAgICBmb3IobGwgYT0wO2E8bjthKyspewogICAgICAgICAgICBpZihzMS5jb3VudCh4W2FdLmNvbXBvbmVudCkpICAgIC8vIElmIHRoZSBzZXQgY29udGFpbnMgdGhlIGNvbXBvbmVudCBvZiB0aGUgbm9kZSAKICAgICAgICAgICAgICAgIHhbYV0uY29sPTA7ICAgICAgICAgICAgICAgICAvLyB0aGlzIG1lYW5zIGNvbnRyYWRpY3Rpb24gd2FzIGZvdW5kCiAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgaW50aWFsIGFzc3VtcHRpb24gd2FzIHRydWUKICAgICAgICAgICAgICAgIHhbYV0uY29sPTE7ICAgICAgICAgICAgICAgICAvLyBub3cgaW5pdGlhbGl6aW5nIHdpdGggZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBzZXQgZG9lcyBub3QgY29udGFpbiwgdHJ1ZSB3YXMgYXNzaWduZWQgY29ycmVjdGx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHhbYV0udmlzPTA7ICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6aW5nIHZhcmlhYmxlcyBvZiBlYWNoIG5vZGUKICAgICAgICAgICAgeFthXS5jb21wb25lbnQ9MDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgczEuY2xlYXIoKTsKICAgICAgICAKICAgICAgICBmb3IobGwgYT0wO2E8bjthKyspCiAgICAgICAgICAgIGlmKHhbYV0udmlzPT0wKXsKICAgICAgICAgICAgICAgIGRmcyh4LGEpOyAgICAgICAgICAgICAgICAgICAvLyBBZ2FpbiBERlMgZm9yIGZpbmRpbmcgaWYgY29udHJhZGljdGlvbiBleGlzdHMKICAgICAgICAgICAgICAgIGNvbXArKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICBpZihmbGFnKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBmbGFnIGlzIHRydWUgdGhlbiBjb250cmFkaWN0aW9uIGV4aXN0cwogICAgICAgICAgICBjb3V0PDwiUEFSQURPWFxuIjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGNvdXQ8PCJOT1QgUEFSQURPWFxuIjsKICAgIH0KCXJldHVybiAwOwp9