#include<iostream>
#include<cstdio>
typedef long long int ll;
using namespace std;
ll n,a[200010],num[200010],pre[400100],ans,j[200010];
const ll mod = 998244353;
ll c(ll n,ll m){//组合数
ll ans = 0;
if(n == 2)
ans = m*(m-1)/2;
if(n == 3)
ans = m*(m-1)*(m-2)/6;
return ans;
}
int main(){
ios::sync_with_stdio(false),cin.tie(NULL);
cin>>n;
if(n<3){
cout<<0<<endl;
return 0;
}
for(int i = 1; i <= n; ++i){
cin>>a[i];
++num[a[i]];//num[x]表示长度为x的木棍数量
}
for(int i = 1; i <= 400010; ++i)//多打一倍的长度
pre[i] = pre[i-1]+num[i];//前缀和,之后会进一步处理的
for(int i = 1; i <= 200000; ++i){
if(num[i]>=2 && pre[2*i]-num[2*i]>=num[i])//围成等腰不等边三角形的数量
ans += c(2,num[i])*(pre[2*i]-num[2*i]-num[i]);//pre[2*i]-num[2*i]表示长度小于2*i的木棍数量,再减去num[i]排除等边的情况
if(num[i]>=3)//等边需要三个以上相同长度的木棍
ans += c(3,num[i]);
ans %= mod;//取模
}
cout<<ans<<endl;
return 0;
}