// Problem: B. Even Modulo Pair
// Contest: Codeforces - Codeforces Global Round 30 (Div. 1 + Div. 2)
// URL: https://codeforces.com/contest/2164/problem/B
// Memory Limit: 256 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)

#include <assert.h>
#include <bits/stdc++.h>
using namespace std;
#ifndef __DEBUG__
#define dbg(...) 42
#endif
template <class T> using mpq = priority_queue<T, vector<T>, greater<T>>;

namespace rngs = std::ranges;
using ll = long long;
using a2l = array<ll, 2>;
using vl = vector<ll>;

void solve()
{
    ll n;
    cin >> n;
    vl a(n), ev, od;
    for (auto &x : a) {
        cin >> x;
        (x % 2 ? od : ev).push_back(x);
    }
    if (ev.size() >= 2) {
        cout << ev[0] << ' ' << ev[1] << '\n';
        return;
    }
    if (ev.size() != 0) {
        for (auto val : od) {
            ll x = min(ev[0], val), y = max(ev[0], val);
            if (y % x % 2 == 0) {
                cout << x << ' ' << y << '\n';
                return;
            }
        }
    }
    for (auto [x, y] : od | std::views::pairwise) {
        if (y % x % 2 == 0) {
            cout << x << ' ' << y << '\n';
            return;
        }
    }
    assert(od.size() < 40);
    for (ll i = 0; i < od.size(); ++i) {
        for (ll j = i + 1; j < od.size(); ++j) {
            ll x = od[i], y = od[j];
            if (y % x % 2 == 0) {
                cout << x << ' ' << y << '\n';
                return;
            }
        }
    }
    cout << -1 << '\n';
}

void solve1()
{
    ll n, oc = 0;
    cin >> n;
    vl a(n);
    for (auto &x : a)
        cin >> x, oc += x % 2 == 0;

    if (oc >= 2) {
        ll x = -1, y = -1;
        for (ll i = 0; i < n; ++i)
            if (a[i] % 2 == 0) {
                if (x == -1)
                    x = a[i];
                else
                    y = a[i];
            }
        cout << x << ' ' << y << '\n';
        return;
    }

    for (auto y : a) {
        // 分块
        for (auto x : a) {
            if (x * x > y)
                break;
            if (y != x && y % x % 2 == 0) {
                cout << x << ' ' << y << '\n';
                return;
            }
        }

        for (ll i = 1; i * i <= y; i += 1) {
            if (y % 2 != i % 2)
                continue;
            ll lb = y / (i + 1), ub = y / i;
            auto it1 = lower_bound(a.begin(), a.end(), lb);
            auto it2 = upper_bound(a.begin(), a.end(), ub);
            if (it1 != a.end() && *it1 <= ub) {
                dbg(lb, ub, *it1);
                ll x = *it1;
                if (x > ub)
                    continue;
                if (x == y)
                    continue;
                if (y % x % 2 == 0) {
                    cout << x << ' ' << y << '\n';
                    return;
                }
            }
        }
    }
    cout << -1 << '\n';
}

int main(int argc, char **argv)
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    ll t = 1;
    cin >> t;
    while (t--)
        solve();

    return 0;
};
