\ (\ Grande \ textbf {Descripción:} \ grande {n-dígitos de izquierda a derecha, se puede eliminar una serie de dígitos cada uno, si se retira, preguntan cuántos programas constituyen una aritmética digital, dejando restante el número de columnas. (n \ leq 1,000)} \)
\ (\ Large \ textbf {Solución:} \ grande {considerado dp \ text {f [i] [j]} denota el i-ésimo dígito, la tolerancia para el número j, entonces se producen fácilmente n ^ 2 transferencia, pero las tolerancias. puede ser negativo, toda la matriz o mapa de la derecha.} \)
\ (\ Grande \ textbf {Código:} \)
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int s = 20000;
const int N = 1e3 + 5;
const int M = 2e4 + 10;
const int p = 998244353;
int n, h[N], f[N][M << 1];
inline int read() {
int ans = 0, flag = 1;
char ch = getchar();
while (ch > '9' || ch < '0') {
if (ch == '-') flag = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
return ans * flag;
}
int main() {
n = read();
for (int i = 1; i <= n; ++i) h[i] = read();
LL ans = 0;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= i - 1; ++j)
f[i][h[i] - h[j] + s] = (f[i][h[i] - h[j] + s] + f[j][h[i] - h[j] + s] + 1) % p, ans = (ans + f[j][h[i] - h[j] + s] + 1) % p;
ans = (ans + n) % p;
printf("%d\n", ans);
return 0;
}