#include using namespace std; const int MX = (1<<17); set < int > S[MX]; int T , n , m; int arr[MX]; int main(){ scanf("%d",&T); while(T--){ scanf("%d %d",&n,&m); for(int j = 0 ; j <= n ; j++){ S[j].clear(); arr[j] = -1; } while(m--){ int a , b; scanf("%d %d",&a,&b); S[a].insert(b); } int K = S[0].size() , t = 0; for(auto pp : S[0]) arr[pp] = ++t; bool sol = 1; for(int pos = 1 ; pos <= n && sol ; pos++){ if(arr[pos] == -1){ sol = 0; break; } if(S[pos].size() != S[pos-1].size() && S[pos].size() + 1 != S[pos-1].size()){ sol = 0; break; } int dif1 = 0 , dif2 = 0 , which1 = 0 , which2 = 0; for(auto key : S[pos-1]){ if(S[pos].count(key) == 0){ dif1++; which1 = key; } } for(auto key : S[pos]){ if(S[pos-1].count(key) == 0){ dif2++; which2 = key; } } if(dif1 > 1 || dif2 > 1 || which1 != pos){ sol = 0; break; } if(which2 == 0) continue; arr[which2] = arr[pos]; } if(sol == 0){ puts("-1"); continue; } for(int j = 1 ; j <= n ; j++) printf("%d ",arr[j]); puts(""); } }