#include<stdio.h>
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
const int MAXn = 1e6 + 5;
const int MOD = 998244353;
int read(){
int w = 0, r = 0;char ch = getchar();
while(ch <'0' || ch > '9')w|=ch == '-', ch = getchar();
while(ch >= '0' && ch <= '9')r = (r<<1)+(r<<3)+(ch^48), ch = getchar();
return w ? ~r + 1 : r;
}
int n, a[MAXn], b[1005][40010];
int sta[MAXn], top;
bool vis[40010];
int main(){
n = read();
//for(int i = 1; i <= n; i++)b[i][0] = 1;
int ans = 0;
for(int i = 1; i <= n; i++)a[i] = read();
for(int i = 2; i <= n; i++){
for(int j = 1; j <= i - 1; j++){
int variance = a[i] - a[j];
if(variance < 0)variance += 20005;
b[i][variance] += b[j][variance] + 1;
b[i][variance] %= MOD;
// printf("%d==%d ", variance, b[i][variance]);
// ans += b[i][variance];//这里会多加
// ans%=MOD;
vis[variance] = 1;
sta[++top] = variance;
}
do{
int p = sta[top--];
if(vis[p]){
ans += b[i][p];
ans %= MOD;
vis[p] = false;
}
}while(top);
}
printf("%d", (ans + n)%MOD);
return 0;
}