#include<bits/stdc++.h>
using namespace std;
using ll=long long;
#define rep(i,a,b) for(int i=int(a);i<=int(b);i++)
#define per(i,a,b) for(int i=int(a);i>=int(b);i--)
#define fi first
#define se second
#define pb push_back
const int inf=0x3f3f3f3f;
const int maxn=4e5+10;
map<pair<int,int>,int> m;
vector<int> g[maxn];
map<int,int> id;
int dis[maxn];
int main() {
    ios::sync_with_stdio(false);cin.tie(0);
    int _;
    cin>>_;
    while(_--) {
        int n,cnt_id;
        id.clear();
        m.clear();
        cin>>n;
        cnt_id=n;
        rep(i,1,n) {
            g[i].clear();
        }
        rep(i,1,n) {
            int k;
            cin>>k;
            while(k--) {
                int x;
                cin>>x;
                if(id[x]==0) {
                    id[x]=++cnt_id;
                    g[cnt_id].clear();
                }
                g[i].pb(id[x]);
                g[id[x]].pb(i);
            }
        }
        queue<int> q;
        auto bfs=[&](int s) {
            rep(i,1,cnt_id) dis[i]=inf;
            dis[s]=0;
            while(!q.empty()) q.pop();
            q.push(s);
            while(!q.empty()) {
                int now=q.front();q.pop();
                if(dis[now]>=2) continue;
                for(int x:g[now]) {
                    if(dis[x]==dis[now]+1&&dis[x]==2) {
                        return x;
                    }
                    if(dis[x]>dis[now]+1) {
                        q.push(x);
                        dis[x]=dis[now]+1;
                    }
                }
            }
            return -1;
        };
        int up=20;
        bool f=false;
        rep(i,1,n) {
            if(f) break;
            if(g[i].size()>=up) {
                int ans=bfs(i);
                if(ans!=-1) {
                    f=true;
                    cout<<i<<' '<<ans<<'\n';
                    break;
                }
            }
            else {
                rep(j,0,g[i].size()-1) {
                    if(f) break;
                    rep(k,j+1,g[i].size()-1) {
                        pair<int,int> tmp={g[i][j],g[i][k]};
                        if(tmp.fi>tmp.se) swap(tmp.fi,tmp.se);
                        if(m[tmp]!=0) {
                            cout<<i<<' '<<m[tmp]<<'\n';
                            f=true;
                            break;
                        }
                        else m[tmp]=i;
                    }
                }
            }
        }
        if(!f) cout<<-1<<'\n';
    }
    return 0;
}
