#include<bits/stdc++.h>

using namespace std;
const int N=1e5+10;
int head[N],inc[N],ans[N];
int T,n,m,num,a1,a2;
struct ty{
    int y,next;
}edge[N];
void addedge(int x,int y)
{
    edge[++num].y=y;
    edge[num].next=head[x];
    head[x]=num;
}
int tuopu()
{
    priority_queue<int> q;
    int num=0;
    int i;
    for(i=1;i<=n;i++)
    {
        if(inc[i] == 0)
        {
            q.push(i);
        }
    }
    while(!q.empty())
    {
        int x = ans[++num] = q.top();
        q.pop();
        for(i = head[x] ; i != -1 ; i=edge[i].next)
        {
            int y=edge[i].y;
            inc[y]--;
            if(inc[y] == 0){
                q.push(y);
            }
        }
    }
    if(num < n)
    {
        return 0;
    }
    else{
        return 1;
    }
}

int main()
{
    cin >> T;
    int i;
    while(T--)
    {
        cin >> n >> m;
        num=0;
        memset(edge, 0, sizeof(edge));
        memset(head, -1, sizeof(head));
        memset(inc, 0, sizeof(inc));
        for(i=1;i<=m;i++)
        {
            cin >> a1 >> a2;
            addedge(a2,a1);
            inc[a1]++;
        }
        if(tuopu() == 0)
        {
            cout << "Impossible!";
        }
        else
        {
            for(i=n;i>=1;i--)
            {
                cout << ans[i] << " ";
            }
        }
        cout << endl;
        
    }
}