#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef pair<int,int>pii;
typedef pair<ll, ll>pll;

const int MAX = 1e5 + 3;
const ll MOD = 1e9 + 7;

const int K = 350;

pii solve(){

    int n;
    cin >> n;

    int k[n+1];
    vector<int>v[n+1];

    map<int, int>mp;
    int m = 0;

    for(int i=1; i<=n; i++){
        cin >> k[i];
        for(int j=0; j<k[i]; j++){
            int x;
            cin >> x;
            if(mp.find(x) == mp.end()) mp[x] = ++m;
            v[i].push_back(mp[x]);
        }
    }




    vector<int>ase(m+1, 0);
    vector<int>sodo;

    for(int i=1; i<=n; i++){
        if(k[i] > K){
            for(int x : v[i]) ase[x] = 1;
            for(int j=1; j<=n; j++){
                if(j==i) continue;
                int cnt = 0;
                for(int y : v[j]){
                    if(ase[y]) cnt++;
                }
                if(cnt >= 2) return {i, j};
            }
            for(int x : v[i]) ase[x] = 0;
        }else sodo.push_back(i);
    }

    vector<int>pr[m+1], id[m+1];

    for(int x : sodo){
        for(int i=0; i<k[x]; i++){
            for(int j=i+1; j<k[x]; j++){
                int p = v[x][i], q = v[x][j];
                if(p > q) swap(p, q);
                pr[p].push_back(q);
                id[p].push_back(x);
            }
        }
    }

    for(int i=1; i<=m; i++){
        for(int j=0; j<pr[i].size(); j++){
            if(ase[pr[i][j]]) return {id[i][j], ase[pr[i][j]]};
            ase[pr[i][j]] = id[i][j];
        }
        for(int x : pr[i]) ase[x] = 0;
    }

    return {-1, -1};


}

int main(){

    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);


    int t;
    cin >> t;

    while(t--){
        pii res = solve();
        if(res.first == -1) cout << "-1\n";
        else cout << res.first << " " << res.second << "\n";
    }



}