#include <bits/stdc++.h>
using namespace std;
#define int              long long int
#define double           long double


const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int MAXN = 100000;
const int LINF = 2000000000000000001;

//_ ***************************** START Below *******************************



vector<int> a;

//* Template 1 

int consistency1(int n ){
	
	int sum = 0, ans = 0;
	unordered_map<int,int> mp;
	
	int s = 0, e = 0;
	while(e<n){
		mp[a[e]]++;
		sum += a[e];
		
		if(mp.size() == e-s+1){
			ans = max(ans, sum);
			e++;
		}
		else{
			while(s<=e && mp.size() < e-s+1){
				mp[a[s]]--;
				if(mp[a[s]] == 0) mp.erase(a[s]);
				sum -= a[s];
				s++;
			}
			ans = max(ans, sum);
			e++;
		}
	}
	
	return ans;
	
}





//* Template 2 

int consistency2(int n ){
	
	int sum = 0, ans = 0;
	unordered_map<int,int> mp;
	
	for(int j=0, i=0; j<n; j++){
		mp[a[j]]++;
		sum += a[j];
		
		while(i<=j && mp.size() < j-i+1){
			mp[a[i]]--;
			if(mp[a[i]] == 0) mp.erase(a[i]);
			sum -= a[i];
			i++;
		}
		ans = max(ans, sum);
	}
	
	return ans;
	
}













int practice(int n){
	
	return 0;	
}




void solve() {

	int n;
	cin >> n;
	a.resize(n);
	for(int i=0; i<n; i++) cin >> a[i];

	cout << consistency1(n)  << " " << consistency2(n)  << endl;
	// cout << consistency1(n) << " -> " << practice(n) << endl;
	
}





int32_t main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int t = 1;
    while (t--) {
        solve();
    }

    return 0;
}