#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
if (!(cin >> N)) return 0;
vector<ll> A(N+1), B(N+1);
for (int i = 1; i <= N; ++i) cin >> A[i];
for (int j = 1; j <= N; ++j) cin >> B[j];
// Build PA[i] = max(A2..Ai) for i=2..N, PB[j] = max(B2..Bj) for j=2..N
vector<ll> PA(N+1), PB(N+1);
if (N >= 2) {
PA[2] = A[2];
for (int i = 3; i <= N; ++i) PA[i] = max(PA[i-1], A[i]);
PB[2] = B[2];
for (int j = 3; j <= N; ++j) PB[j] = max(PB[j-1], B[j]);
}
// Collect all values that may appear (boundaries + PA + PB)
vector<ll> vals;
vals.reserve( (N*2) + 5 );
for (int i = 1; i <= N; ++i) vals.push_back(A[i]);
for (int j = 2; j <= N; ++j) vals.push_back(B[j]);
for (int i = 2; i <= N; ++i) vals.push_back(PA[i]);
for (int j = 2; j <= N; ++j) vals.push_back(PB[j]);
sort(vals.begin(), vals.end());
vals.erase(unique(vals.begin(), vals.end()), vals.end());
int M = (int)vals.size();
// map value -> index
unordered_map<ll,int> idx;
idx.reserve(M * 2);
for (int k = 0; k < M; ++k) idx[vals[k]] = k;
// freq arrays
vector<ll> freqBound(M, 0); // counts from A_i (i=1..N) and B_j (j=2..N)
for (int i = 1; i <= N; ++i) freqBound[idx[A[i]]]++; // first column all A_i
for (int j = 2; j <= N; ++j) freqBound[idx[B[j]]]++; // first row except (1,1)
vector<ll> cntPA(M, 0), cntPB(M, 0);
for (int i = 2; i <= N; ++i) cntPA[idx[PA[i]]]++;
for (int j = 2; j <= N; ++j) cntPB[idx[PB[j]]]++;
// prefix sums on PB to compute leqPB[v] quickly
vector<ll> prefPB(M+1, 0), prefPA(M+1, 0);
for (int k = 0; k < M; ++k) {
prefPB[k+1] = prefPB[k] + cntPB[k];
prefPA[k+1] = prefPA[k] + cntPA[k];
}
// compute interior counts and total counts
ll bestCnt = -1;
ll bestColor = -1;
for (int k = 0; k < M; ++k) {
ll v = vals[k];
ll cntAeq = cntPA[k];
ll cntBeq = cntPB[k];
ll leqPB = prefPB[k+1]; // number of PB <= v
ll ltPA = prefPA[k]; // number of PA < v
ll interior = cntAeq * leqPB + cntBeq * ltPA;
ll total = interior + freqBound[k];
// tie-break: choose larger color when counts equal
if (total > bestCnt || (total == bestCnt && v > bestColor)) {
bestCnt = total;
bestColor = v;
}
}
cout << bestColor << " " << bestCnt << "\n";
return 0;
}