#include <cassert>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <string>
#include <fstream>

using namespace std;

typedef pair<int,int> pii;
typedef long long ll;
typedef pair<bool,string> part;
typedef pair<part,part> ppp;
typedef pair<bool,ppp> cls;

int N,M;
string strs[511];

part analize1(const string s){
  {
    int cnt=0;
    // アルファベットだけの文字列なら、そのまま戻す
    for(int i=0;i<(int)s.size();i++)
      if(isalpha(s[i]))cnt++;
    if(cnt==(int)s.size())
      return part(true,s);
  }
  // 括弧
  if(s[0]=='('&&s[(int)s.size()-1]==')'){
    int cnt=0;
    bool ok=true;
    for(int i=0;i<(int)s.size()-1;i++){
      if(s[i]=='(')cnt++;
      else if(s[i]==')')cnt--;
      if(cnt==0)ok=false;
    }
    if(ok)
      return analize1(s.substr(1,(int)s.size()-2));
  }
  // not
  if(s[0]=='~'){
    part p=analize1(s.substr(1));
    p.first^=1;
    return p;
  }
}

cls analize2(const string s){
  //cout<<s<<endl;
  // 括弧
  // if(s[0]=='('&&s[(int)s.size()-1]==')'){
  //   int cnt=0;
  //   bool ok=true;
  //   for(int i=0;i<(int)s.size()-1;i++){
  //     if(s[i]=='(')cnt++;
  //     else if(s[i]==')')cnt--;
  //     if(cnt==0)ok=false;
  //   }
  //   if(ok)
  //     return analize1(s.substr(1,(int)s.size()-2));
  // }
  if(s[0]=='('&&s[(int)s.size()-1]==')'){
    bool ok=true;
    int cnt=0;
    for(int i=0;i<(int)s.size()-1;i++){
      if(s[i]=='(')cnt++;
      else if(s[i]==')')cnt--;
      if(cnt==0){
        ok=false;
      }
    }
    if(ok)
      return analize2(s.substr(1,(int)s.size()-2));
  }
  // 2項演算子を探す
  {
    int cnt=0;
    for(int i=0;i<(int)s.size();i++){
      if(s[i]=='(')cnt++;
      else if(s[i]==')')cnt--;
      else if(cnt==0){
        // split
        if(s[i]=='|'){
          part p1=analize1(s.substr(0,i));
          part p2=analize1(s.substr(i+1));
          ppp p3=ppp(p1,p2);
          cls res=make_pair(false,p3);
          return res;
        }
        else if(s[i]=='&'){
          part p1=analize1(s.substr(0,i));
          part p2=analize1(s.substr(i+1));
          ppp p3=ppp(p1,p2);
          cls res=make_pair(true,p3);
          return res;
        }
      }
    }
  }
  // not
  if(s[0]=='~'){
    cls p=analize2(s.substr(1));
    p.first^=1;
    p.second.first.first^=1;
    p.second.second.first^=1;
    return p;
  }
}


class TwoSat{
private:
  static const int MAX_V=100000;
  vector<int> G[MAX_V];
  vector<int> rG[MAX_V];
  bool used[MAX_V];
  int cmp[MAX_V];
  vector<int> vs;
  int V;
  void add_edge(int from,int to){
    G[from].push_back(to);
    rG[to].push_back(from);
  }
  void dfs(int s){
    used[s]=true;
    for(int i=0;i<(int)G[s].size();i++){
      int to=G[s][i];
      if(!used[to])dfs(to);
    }
    vs.push_back(s);
  }
  void rdfs(int s,int k){
    used[s]=true;
    cmp[s]=k;
    for(int i=0;i<(int)rG[s].size();i++){
      int to=rG[s][i];
      if(!used[to]){
        rdfs(to,k);
      }
    }
  }
  int makeGraph(int N){
    vs.clear();
    memset(used,0,sizeof(used));
    for(int i=0;i<N;i++)
      if(!used[i])dfs(i);
    memset(used,0,sizeof(used));
    int k=0;
    for(int i=vs.size()-1;i>=0;i--)
      if(!used[vs[i]])rdfs(vs[i],k++);
    return k;
  }
public:
  int Not(int a){
    if(a>=V/2)return a-V/2;
    return a+V/2;
  }
  void init(int V_){
    V=2*V_;
    for(int i=0;i<V;i++)
      G[i].clear(),rG[i].clear();
  }
  void addClosure(int a,int b){
    add_edge(Not(b),a);
    add_edge(Not(a),b);
  }
  bool isSat(){
    makeGraph(V);
    for(int i=0;i<V/2;i++)
      if(cmp[i]==cmp[Not(i)])
        return false;
    return true;
  }
};

TwoSat ts;

int main(){
  
  map<string,int> node;
  int V=1;
  cin>>N>>M;
  for(int i=0;i<N;i++){
    cin>>strs[i];
    strs[i]=strs[i].substr(0,(int)strs[i].size()-1);
  }
  ts.init(2000);
  ts.addClosure(ts.Not(0),ts.Not(0));
  for(int i=0;i<N;i++){
    // この文が変数を1,2個どちらかで場合分け
    bool isAnd=false;
    bool isOr=false;
    string &s=strs[i];
    for(int j=0;j<(int)s.size();j++)
      if(s[j]=='|')isOr=true;
      else if(s[j]=='&')isAnd=true;
    if(isAnd||isOr){
      cls c=analize2(s);
      isAnd=isOr=false;
      if(c.first)isAnd=true;
      else isOr=true;
      if(node.count(c.second.first.second)==0)
        node[c.second.first.second]=V++;
      if(node.count(c.second.second.second)==0)
        node[c.second.second.second]=V++;
      ppp p=c.second;
      int a=node[p.first.second];
      int b=node[p.second.second];
      if(!p.first.first)a=ts.Not(a);
      if(!p.second.first)b=ts.Not(b);
      if(isOr)ts.addClosure(a,b);
      else{
        ts.addClosure(0,a);
        ts.addClosure(0,b);
      }
    }
    else{
      part p=analize1(s);
      if(node.count(p.second)==0)
        node[p.second]=V++;
      int a=node[p.second];
      if(!p.first)a=ts.Not(a);
      ts.addClosure(0,a);
    }
  }
  if(ts.isSat())cout<<"accept"<<endl;
  else cout<<"reject"<<endl;
  
  return 0;
}

Measured memory_bytes: 6200