昨日CF B
#include <bits/stdc++.h>
using namespace std;
#define N 200010
#define sz(s) s.size()
#define db double
#define mod 1000000007
#define P 998244353
#define ll long long
#define fi first
#define se second
#define pb push_back
#define mk make_pair
#define per(i,l,r) for(ll i=l;i>=r;i--)
#define rep(i,l,r) for(ll i=l;i<=r;i++)
#define in insert
#define y1 y142857
//pair<ll,ll> PII;
//unordered_map<int,int> f;
vector<int>edges[N];
//set<int>c;
int huiwen(int x){int b[100],l=0,t=x;while(t!=0){b[++l]=t%10;t/=10;}for(int i=1,j=l;i<=j;i++,j--)if(b[i]!=b[j])return 0;return 1;}
int prime(int x){for(int i=2;i*i<=x;i++)if(x%i==0)return 0;return 1;}
inline int gcd(int a,int b){if(a<b)gcd(b,a);if(!b)return a; return gcd(b,a%b);}
inline int lcm(int a,int b){return a*b/gcd(a,b);}
inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
inline void pri(int x){
if(x==1)putchar(' ');
if(x==2)putchar('\n');
}
inline void put(int x){
if(x==1)puts("Yes");
if(x==2)puts("No");
if(x==3)puts("YES");
if(x==4)puts("NO");
if(x==5)puts("yes");
if(x==6)puts("no");
}
inline void write(int x,int w,int e){
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10,w,e);
putchar(x%10+'0');
if(x==e){
if(w==1)putchar(' ');
if(w==2)putchar('\n');
}
return;
}
//time: O( )
//memory: ()kb
int a[3000][3000],c[3000];
struct T{
int v,id;
}b[3000];
bool cmp(const T f,const T g){
return f.v<g.v;
}
void sovel(){
int n=read(),m=read();
rep(i,1,n)
rep(j,1,m)
a[i][j]=read();
rep(i,1,n){
rep(j,1,m)c[j]=a[i][j];
sort(c+1,c+m+1);
rep(j,1,m-1)
if(c[j]==c[j+1]-1){
puts("-1");
return;
}
}
rep(i,1,n){int mi=P;
rep(j,1,m)mi=min(mi,a[i][j]);
b[i].v=mi;
b[i].id=i;
}
sort(b+1,b+n+1,cmp);
rep(i,1,n)printf("%d ",b[i].id);
puts("");
}
int main(){
int _=read();
while(_--)sovel();
}
玄关