#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
#include<cstring>
#include<queue>
#define MAX 2022
#define mod 80112002
#define SPACE putchar(' ');
using namespace std;
inline int read(){
int x=0,f=1;
char c=getchar();
while(c<48||c>57) c=getchar(); if(c=='-')f=-1;
while(c>47&&c<58) x*=10,x+=c-48,c=getchar();
return x*f;
}
inline void out(int x){
if(x<0) putchar('-'), x=-x;
if(x>=10) out(x/10);
char a=x%10+'0';
putchar(a);
}
struct data{
int v,d;
};
void swap(int &a,int &b){
int t=a;
a=b;
b=t;
return;
}
int topsort();
char s[29];
int n,m,head[MAX],nxt[MAX],edge[MAX],tip,deg[MAX],cnt,N;
bool vis[MAX],flag;
int main(){
n=read(),m=read();
for(int i=1;i<=m;i++){
char C,D,op,mem; getchar();
scanf("%c%c%c",&C,&op,&D);getchar();
int c=C-'A'+1,d=D-'A'+1; if(op=='>') swap(c,d);
if(!vis[c])N++; if(!vis[d])N++;
vis[c]=vis[d]=true;
edge[++tip]=d; nxt[tip]=head[c]; head[c]=tip;
deg[d]++;
int key=topsort();
if(key==1) {printf("Sorted sequence determined after %d relations: %s",i,s);flag=true;break;}
else if(key==2) continue;
else if(key==3){printf("Inconsistency found after %d relations.",i);flag=true;break;}
}
if(!flag)printf("Sorted sequence cannot be determined.");
return 0;
}
int topsort(){
queue<data> q; int ans=0,redeg[MAX],num=N;
cnt=0;
for(int i=1;i<=n;i++){
redeg[i]=deg[i];
if(!redeg[i]&&vis[i]) q.push({i,1}),num--;
}
while(!q.empty()){
int k=q.front().v,D=q.front().d; q.pop();
s[cnt++]=char(k+'A'-1);
for(int i=head[k];i;i=nxt[i]){
int node=edge[i];
redeg[node]--;
if(!redeg[node]) q.push({node,D+1}),num--;
}
ans=max(ans,D);
}
if(num)return 3;
else if(ans==n)return 1;
else return 2;
}