#include<bits/stdc++.h>
using namespace std;
using ui=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128_t;
using u128=__uint128_t;
using ld=long double;
void solve()
{//简单思考一下 小红的最优操作肯定是每次拿最大的一堆石子
//小紫的最优操作就是单纯的每堆拿一个
//简单模拟一下 小红拿的第一堆石子 小紫拿了0个
//小红拿的第二堆石子 小紫拿了里面的1个
//所以小红拿的第n堆石子 小紫拿了n-1个
//所以我们将数组排序 从大到小让sum+(a[i]-i)即可
//当a[i]-i==0时停止 此时全部石子被拿完
ll n,sum=0;
cin >> n;
vector<ll>a(n,0);
for(int i=0;i<n;i++) cin >> a[i];
sort(a.begin(),a.end(),greater<int>());
for(int i=0;i<n;i++)
{
if(a[i]-i<=0) break;
sum+=(a[i]-i);
}
cout << sum;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t=1;
//cin >> t;
while(t--)
{
solve();
}
return 0;
}