#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>

inline void read(int &x)
{
	char c=x=0;
	for(c=getchar();!isdigit(c);c=getchar());
	for(;isdigit(c);c=getchar())x=x*10+(c^48);
}

namespace o_o
{
	const int N=1010,M=200100;

	bool g[N][N],ans[N][N];
	int f0[N],f1[N];

	std::vector<int>G[N];

	void Dfs(int p,int h,int *f)
	{
		if(f[p])return;f[p]=h;
		for(int i=0;i<(int)G[p].size();i++)
			Dfs(G[p][i],h,f);
	}

	int n,m;

	inline void work(int p)
	{
		memset(f0,0,sizeof(f0)),memset(f1,0,sizeof(f1));
		f0[p]=f1[p]=2333;

		for(int i=0;i<(int)G[p].size();i++)
			Dfs(G[p][i],G[p][i],f0);
		for(int i=G[p].size()-1;~i;i--)
			Dfs(G[p][i],G[p][i],f1);

		for(int i=1;i<=n;i++)
			ans[p][i]=f0[i]!=f1[i],g[p][i]=(f0[i] || f1[i]);
	}

	int E[M][2];

	void solve()
	{
		read(n),read(m);
		for(int i=1,u,v;i<=m;i++)
			read(u),read(v),E[i][0]=u,E[i][1]=v,G[u].push_back(v);

		for(int p=1;p<=n;p++)work(p);

		for(int i=1;i<=m;i++)
		{
			int u=E[i][0],v=E[i][1];
			if(g[v][u]^ans[u][v])printf("diff\n");
			else printf("same\n");
		}
	}
}

int main()
{
	o_o::solve();
	return 0;
}
