There is a complete graph of m vertices. Initially, the edges of the complete graph are uncolored. Sunuke did the following for each i (1 ≤ i ≤ n): Select ai vertices from the complete graph and color all edges connecting the selected vertices with color i. None of the sides were painted in multiple colors. Find the minimum value that can be considered as m.

Constraints

* 1 ≤ n ≤ 5
* 2 ≤ ai ≤ 109

Input


n
a1
.. ..
an


Output

Output the minimum value of m on one line.

Examples

Input

2
3
3


Output

5


Input

5
2
3
4
5
6


Output

12
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <climits>
#include <cstring>
#include <cassert>


using namespace std;
#define SZ(x) (int)(x.size())
#define REP(i, n) for(int i=0;i<n;++i)
#define FOR(i, a, b) for(int i=a;i<b;++i)
#define RREP(i, n) for(int i=n-1;i>=0;--i)
#define RFOR(i, a, b) for(int i=b-1;i>=a;--i)

#define all(x) begin(x),end(x)
#define dump(x) cerr<<#x<<" = "<<(x)<<endl
#define debug(x) cerr<<#x<<" = "<<(x)<<" (L"<<__LINE__<<")"<< endl;

using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;
using vvll = vector<vll>;
using P = pair<int, int>;
const double eps = 1e-8;
const ll MOD = 1000000007;
const int INF = INT_MAX / 2;
const ll LINF = LLONG_MAX / 2;

template<class T>
bool chmax(T &a, const T &b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
bool chmin(T &a, const T &b) {
    if (b < a) {
        a = b;
        return true;
    }
    return false;
}


template<typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> p) {
    os << p.first << ":" << p.second;
    return os;
}

template<class T>
ostream &operator<<(ostream &os, const vector<T> &v) {
    os << "[";
    REP(i, SZ(v)) {
        if (i) os << ", ";
        os << v[i];
    }
    return os << "]";
}

// edit

void solve() {
    int n;
    cin >> n;
    vector<int> a(n);
    REP(i, n) cin >> a[i];
    sort(a.rbegin(), a.rend());

    if (n == 4 && a[3] <= 3) {

        if (a[0] >= 3) {
            ll ans = 0;
            REP(i, 3) {
                ll add = max<ll>(0, a[i] - i);
                ans += add;
            }
            cout << ans << endl;
            return;
        }

        if (a[0] == 2) {
            cout << 4 << endl;
            return;
        }
    } else if (n == 5 && a[3] <= 3) {
        ll ans = 0;
        REP(i, 4) {
            ll add = max<ll>(0, a[i] - i);
            ans += add;
        }


        if (a[3] == 3) {
            if (a[2] >= 4 || a[1] >= 4) {
                cout << ans << endl;
                return;
            } else if (a[0] >= 4) {
                ans += max<ll>(0, a[4] - 2);
                cout << ans << endl;
                return;
            } else {
                ans = 6;
                ans += a[4] - 2;
                cout << ans << endl;
                return;
            }
        }

        if (a[3] == 2) {
            if (a[2] >= 3 || a[1] >= 3) {
                ans -= max<ll>(0, a[3] - 3);
                cout << ans << endl;
                return;
            } else if (a[0] >= 3) {
                ans = 5 + max<ll>(0, a[0] - 4);
//                ans -= max<ll>(0, a[3] - 3);
//                ans++;
                cout << ans << endl;
                return;
            } else {
                cout << 4 << endl;
                return;
            }

        }
    }


    ll ans = 0;
    REP(i, n) {
        ll add = max<ll>(0, a[i] - i);
        ans += add;
    }
    cout << ans << endl;
}


int main() {
    cin.tie(0);
    ios::sync_with_stdio(false);
    cout << fixed << setprecision(10);
//    std::ifstream in("input.txt");
//    std::cin.rdbuf(in.rdbuf());

    solve();


    return 0;
}

