#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const int BLK = 50;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    auto cmpsz = [](vector<int>& a, vector<int>& b){
        return a.size()<b.size();
    };
    const int N = 200005;
    vector<int> nmap(N,0),nver(N,0),rver(N,0);
    vector<vector<int>> rev(N,vector<int>());
    int t;
    cin >> t;
    int nv = 0, rv = 0;
    while(t--){
        int n;
        cin >> n;
        map<int,int> amap;
        int ac = 0;
        vector<vector<int>> a(n,vector<int>());
        vector<int> asz(n,0);
        for(int j = 0; j<n; j++){
            cin >> asz[j];
            a[j].resize(asz[j]);
            for(int i = 0; i<asz[j]; i++){
                cin >> a[j][i];
                if(amap.find(a[j][i])==amap.end())
                    amap[a[j][i]] = ac++;
                a[j][i] = amap[a[j][i]];
            }
        }
        vector<int> big;
        for(int i = 0; i<n; i++){
            if(asz[i]>BLK)
                big.push_back(i);
        }
        int b = (int)big.size();
        pair<int,int> found = {-1,-1};
        rv++;
        vector<int> imp;
        for(int i = 0; i<n; i++){
            if(asz[i]>BLK)
                continue;
            for(auto it:a[i]){
                if(rver[it]!=rv){
                    rver[it] = rv;
                    rev[it].clear();
                    imp.push_back(it);
                }
                rev[it].push_back(i);
            }
        }
        for(auto it:imp){
            nv++;
            for(auto jt:rev[it]){
                for(auto kt:a[jt]){
                    if(kt==it)
                        continue;
                    if(nver[kt]==nv){
                        found = {nmap[kt],jt};
                        break;
                    }else{
                        nver[kt]=nv;
                        nmap[kt]=jt;
                    }
                }
                if(found.first!=-1)
                    break;
            }
            if(found.first!=-1)
                break;
        }
        if(found.first!=-1)
            cout << found.first+1 << " " << found.second+1 << endl;
        else{
            for(auto it:big){
                nv++;
                for(auto jt:a[it])
                    nver[jt] = nv;
                for(int i = 0; i<n; i++){
                    if(i==it)
                        continue;
                    int nsum = 0;
                    for(auto jt:a[i]){
                        if(nver[jt]==nv)
                            nsum++;
                    }
                    if(nsum>=2){
                        found = {it,i};
                        break;
                    }
                }
                if(found.first!=-1)
                    break;
            }
            if(found.first!=-1)
                cout << found.first+1 << " " << found.second+1 << endl;
            else
                cout << "-1" << endl;
        }
    }   
    return 0;
}