//this program has been specifically designed not to run on java..so this is the cpp equivalent of the java code
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int t,cnt=1;
scanf("%d",&t);
while(t--)
{
int n,r,i;
scanf("%d%d",&n,&r);
vector<int> g[n]; bool vis[n]; int deg[n];
for(i=0;i<n;i++)
{
g[i].clear();
vis[i]=false;
deg[i]=0;
}
for(i=0;i<r;i++)
{
int l,f;
scanf("%d%d",&l,&f);
g[f].push_back(l);
deg[l]++;
}
queue<pair<int,int>> q;
vector<pair<int,int>> ans;
for(i=0;i<n;i++)
if(deg[i]==0)
{
q.push({i,1});
vis[i]=true;
}
while(!q.empty())
{
pair<int,int> x;
x.first=q.front().first;
x.second=q.front().second;
q.pop();
ans.push_back({x.second,x.first});
for(i=0;i<g[x.first].size();i++)
if(!vis[g[x.first][i]])
{
deg[g[x.first][i]]--;
if(deg[g[x.first][i]]==0)
{
q.push({g[x.first][i],x.second+1});
vis[g[x.first][i]]=true;
}
}
}
sort(ans.begin(),ans.end());
printf("Scenario #%d:\n",cnt);
cnt++;
for(i=0;i<ans.size();i++)
printf("%d %d\n",ans[i].first,ans[i].second);
}
return 0;
}
Ly90aGlzIHByb2dyYW0gaGFzIGJlZW4gc3BlY2lmaWNhbGx5IGRlc2lnbmVkIG5vdCB0byBydW4gb24gamF2YS4uc28gdGhpcyBpcyB0aGUgY3BwIGVxdWl2YWxlbnQgb2YgdGhlIGphdmEgY29kZQoKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG1haW4oKQp7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgaW50IHQsY250PTE7CiAgICBzY2FuZigiJWQiLCZ0KTsKICAgIHdoaWxlKHQtLSkKICAgIHsKICAgICAgICBpbnQgbixyLGk7CiAgICAgICAgc2NhbmYoIiVkJWQiLCZuLCZyKTsKICAgICAgICB2ZWN0b3I8aW50PiBnW25dOyBib29sIHZpc1tuXTsgaW50IGRlZ1tuXTsKICAgICAgICBmb3IoaT0wO2k8bjtpKyspCiAgICAgICAgewogICAgICAgICAgICBnW2ldLmNsZWFyKCk7CiAgICAgICAgICAgIHZpc1tpXT1mYWxzZTsKICAgICAgICAgICAgZGVnW2ldPTA7CiAgICAgICAgfQoKICAgICAgICBmb3IoaT0wO2k8cjtpKyspCiAgICAgICAgewogICAgICAgICAgICBpbnQgbCxmOwogICAgICAgICAgICBzY2FuZigiJWQlZCIsJmwsJmYpOwogICAgICAgICAgICBnW2ZdLnB1c2hfYmFjayhsKTsKICAgICAgICAgICAgZGVnW2xdKys7CiAgICAgICAgfQoKICAgICAgICBxdWV1ZTxwYWlyPGludCxpbnQ+PiBxOwogICAgICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiBhbnM7CiAgICAgICAgZm9yKGk9MDtpPG47aSsrKQogICAgICAgIGlmKGRlZ1tpXT09MCkKICAgICAgICB7CiAgICAgICAgICAgIHEucHVzaCh7aSwxfSk7CiAgICAgICAgICAgIHZpc1tpXT10cnVlOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUoIXEuZW1wdHkoKSkKICAgICAgICB7CiAgICAgICAgICAgIHBhaXI8aW50LGludD4geDsKICAgICAgICAgICAgeC5maXJzdD1xLmZyb250KCkuZmlyc3Q7CiAgICAgICAgICAgIHguc2Vjb25kPXEuZnJvbnQoKS5zZWNvbmQ7CiAgICAgICAgICAgIHEucG9wKCk7CiAgICAgICAgICAgIGFucy5wdXNoX2JhY2soe3guc2Vjb25kLHguZmlyc3R9KTsKICAgICAgICAgICAgZm9yKGk9MDtpPGdbeC5maXJzdF0uc2l6ZSgpO2krKykKICAgICAgICAgICAgaWYoIXZpc1tnW3guZmlyc3RdW2ldXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGVnW2dbeC5maXJzdF1baV1dLS07CiAgICAgICAgICAgICAgICBpZihkZWdbZ1t4LmZpcnN0XVtpXV09PTApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHtnW3guZmlyc3RdW2ldLHguc2Vjb25kKzF9KTsKICAgICAgICAgICAgICAgICAgICB2aXNbZ1t4LmZpcnN0XVtpXV09dHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc29ydChhbnMuYmVnaW4oKSxhbnMuZW5kKCkpOwogICAgICAgIHByaW50ZigiU2NlbmFyaW8gIyVkOlxuIixjbnQpOwogICAgICAgIGNudCsrOwogICAgICAgIGZvcihpPTA7aTxhbnMuc2l6ZSgpO2krKykKICAgICAgICBwcmludGYoIiVkICVkXG4iLGFuc1tpXS5maXJzdCxhbnNbaV0uc2Vjb25kKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==