#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
int n,m,minn[1005],maxx[1005],u[200005],v[200005];
bool f1[1005][1005],f2[1005][1005],flag[1005];
queue<int>q;
long long tot;
vector<int>out[1005];
void bfs(int s,bool*flag,int*a)
{
	flag[s]=1;
	a[s]=s;
	q.push(s);
	while(!q.empty())
	{
		int node=q.front();
		q.pop();
		for(auto to:out[node])
		{
			tot++;
			if(!flag[to])
			{
				flag[to]=1,a[to]=s;
				q.push(to);
			}
		}
	}
}
int main()
{
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d",&u[i],&v[i]);
		out[u[i]].push_back(v[i]);
	}
	for(int i=1;i<=n;i++)bfs(i,f1[i],minn);
	for(int i=1;i<=n;i++)
	{
		sort(out[i].begin(),out[i].end());
		int t=(int)out[i].size();
		memset(flag,0,sizeof(flag));
		flag[i]=1;
		for(int j=0;j<t;j++)
		  if(!flag[out[i][j]])
		    bfs(out[i][j],flag,minn);
		memset(flag,0,sizeof(flag));
		flag[i]=1;
		for(int j=t-1;j>=0;j--)
		  if(!flag[out[i][j]])
		    bfs(out[i][j],flag,maxx);
		for(auto x:out[i])f2[i][x]=minn[x]<maxx[x];
	}
	for(int i=1;i<=m;i++)
	{
		if(f1[v[i]][u[i]]^f2[u[i]][v[i]])puts("diff");
		else puts("same");
	}
	return 0;
}