#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <bitset>
#include <vector>
#include <queue>
#define PB push_back
#define PII pair<int,int>
#define MP make_pair
#define fir first
#define sec second
#define ll long long
using namespace std;
template <class T>
inline void rd(T &x) {
	x=0; char c=getchar(); int f=1;
	while(!isdigit(c)){if(c=='-')f=-1; c=getchar();}
	while(isdigit(c)) x=x*10-'0'+c,c=getchar(); x*=f;
}
const int N=1010,M=1003;
vector<int> G[N];
int n,m;
int vis[N][2],cur,tg;
void dfs(int u) {
	if(vis[u][cur]) return;
	vis[u][cur]=tg;
	for(int i=0;i<G[u].size();++i) dfs(G[u][i]);
}
int p1[N][N],p2[N][N],mp[N][N];
void sol(int s) {
	for(int i=1;i<=n;++i) vis[i][0]=vis[i][1]=i==s;
	cur=0; for(int i=1;i<=n;++i) if(mp[s][i]) tg=i,dfs(i);
	cur=1; for(int i=n;i>=1;--i) if(mp[s][i]) tg=i,dfs(i);
	for(int i=1;i<=n;++i) if(s!=i) {
		p1[s][i]=vis[i][0]||vis[i][1];
		p2[s][i]=p1[s][i]&&(vis[i][0]!=i||vis[i][1]!=i);
	}
}
vector<PII> E;
int main() {
	rd(n),rd(m);
	for(int i=1,x,y;i<=m;++i) rd(x),rd(y),G[x].PB(y),mp[x][y]=1,E.PB(MP(x,y));
	for(int i=1;i<=n;++i) sol(i);
	for(int i=0;i<E.size();++i) { 
		int x=E[i].fir,y=E[i].sec,flg;
		if(p1[y][x]) flg=(p2[x][y]==1);
		else flg=(p2[x][y]==0);
		if(flg) printf("same\n");
		else printf("diff\n");
	}
	return 0;
}
	