#include<bits/stdc++.h>
using namespace std;
const int N=200200;
inline int read(int x=0,bool f=0,char ch=getchar()){
	for(;!isdigit(ch);ch=getchar()) f=ch=='-';
	for(; isdigit(ch);ch=getchar()) x=(x<<3)+(x<<1)+(ch^48);
	return f?-x:x;
}
int n,m,tot,ccc,fi[N],to[N],u[N],ne[N];
bool vis[1010][1010];
int pre[1010][1010],suf[1010][1010],que[N],l,r;
vector<int> g[1010];
void dfs(int x,int id){
	vis[id][x]=true;
	for(int i:g[x]) if(!vis[id][i]) dfs(i,id);
}
void dfs1(int x,int id,int k){
	pre[id][x]=k;++ccc;
	for(int i:g[x]) if(!pre[id][i]) dfs1(i,id,k);
}
void dfs2(int x,int id,int k){
	suf[id][x]=k;
	for(int i:g[x]) if(!suf[id][i]) dfs2(i,id,k);
}
int main(){
//	freopen("t.in","r",stdin);
//	freopen("1.out","w",stdout);
	n=read(),m=read();
	for(int i=1,x,y;i<=m;++i) x=read(),y=read(),ne[++tot]=fi[x],u[tot]=x,to[fi[x]=tot]=y,g[x].push_back(y);
	for(int i=1;i<=n;++i) dfs(i,i);
	for(int i=1;i<=n;++i){
		vector<int> s; int sz=0; pre[i][i]=suf[i][i]=1;
		for(int j=fi[i];j;j=ne[j]) s.push_back(to[j]);
		for(int j:s){
			++sz;
			if(!pre[i][j]) dfs1(j,i,sz);
		}
		reverse(s.begin(),s.end());
		for(int j:s){
			if(!suf[i][j]) dfs2(j,i,sz);
			--sz;
		}
	}
	for(int i=1;i<=m;++i){
		int x=u[i],y=to[i];
		if(vis[y][x]^(pre[x][y]!=suf[x][y])) puts("diff");
		else puts("same");
	}
	return 0;
}