#include <cstdio>
#include <vector>
#include <cstring>
#define PB push_back
using namespace std;
typedef vector<int> VI;
const int N=1010,M=200010;
int n,m;
int edge[M][2];
VI e[N];
void readData(){
	scanf("%d%d",&n,&m);
	int u,v;
	for(int i=1;i<=m;i++){
		scanf("%d%d",&u,&v);
		edge[i][0]=u; edge[i][1]=v;
		e[u].PB(v);
	}
}
int reach[2][N][N];
void dfs(int u,int x,int id,int *arr){
	if(arr[u]!=-1)
		return;
	arr[u]=id;
	for(int i=0,sz=e[u].size();i<sz;i++)
		if(e[u][i]!=x)
			dfs(e[u][i],x,id,arr);
}
void calcReach(){
	memset(reach,-1,sizeof reach);
	for(int u=1;u<=n;u++){
		int sz=e[u].size();
		for(int i=0;i<sz;i++)
			dfs(e[u][i],u,i,reach[0][u]);
		for(int i=sz-1;i>=0;i--)
			dfs(e[u][i],u,i,reach[1][u]);
	}
}
void answer(){
	for(int i=1;i<=m;i++){
		int u=edge[i][0],v=edge[i][1];
		if((reach[0][v][u]!=-1)^(e[u][reach[0][u][v]]!=v||e[u][reach[1][u][v]]!=v))
			puts("diff");
		else
			puts("same");
	}
}
int main(){
	readData();
	calcReach();
	answer();
	return 0;
}
