#include #pragma GCC optimize("O3") //#define int long long using namespace std; signed main(){ cin.tie(0); ios::sync_with_stdio(0); int n; cin >> n; vector a(n), cnt(21); vector> dp(1 << 20, vector(20)); int all = 0; for (int& v : a) { cin >> v, --v; cnt[v] += 1; all |= 1 << v; } for (int i = 0; i < 20; ++i) dp[1 << i][i] = (cnt[i] - 1) * (i+1); for (int i = 0; i < (1 << 20); ++i) if ((all | i) == all) { for (int k = 0; k < 20; ++k) if (!((1 << k) & i) && cnt[k]) { int ni = i | (1 << k); for (int j = 0; j < 20; ++j) if ((1 << j) & i) { dp[ni][k] = max(dp[ni][k], dp[i][j] + __gcd(j + 1, k + 1) + (cnt[k] - 1) * (k + 1)); } } } int res = 0; for (int i = 0; i < 20; ++i) res = max(res, dp[all][i]); cout << res << '\n'; }