#include<bits/stdc++.h>
using namespace std;
const int N=1010;
const int M=200010;
int n,m,a[M],b[M],f[N];
vector<int>e[N];
bool vis[N],vis1[N][N],vis2[N][N];
void dfs1(int u,int s){
	if(vis1[s][u]) return;
	vis1[s][u]=1;
	for(int i=0;i<e[u].size();i++){
		dfs1(e[u][i],s);
	} 
}
void dfs2(int u,int s,int typ,int k){
	if(vis[u]) return;
	vis[u]=1;
	if(!typ) f[u]=k;
	else vis2[s][u]=(k!=f[u]);
	for(int i=0;i<e[u].size();i++){
		dfs2(e[u][i],s,typ,k);
	} 
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&a[i],&b[i]);
		e[a[i]].push_back(b[i]);
	}
	for(int i=1;i<=n;i++){
		dfs1(i,i);
	}
	for(int s=1;s<=n;s++){
		for(int i=1;i<=n;i++){
			vis[i]=0;
		}
		vis[s]=1;
		for(int i=0;i<e[s].size();i++){
			dfs2(e[s][i],s,0,i);
		}
		for(int i=1;i<=n;i++){
			vis[i]=0;
		}
		vis[s]=1;
		for(int i=e[s].size()-1;i>=0;i--){
			dfs2(e[s][i],s,1,i);
		}
	}
	for(int i=1;i<=m;i++){
		printf(vis1[b[i]][a[i]]^vis2[a[i]][b[i]]?"diff\n":"same\n");
	}
}
	