#include #include using namespace std; const int MAXN = 5005; const long long mod = 1e9 + 7; int n; long long a[MAXN]; long long prefix[MAXN]; long long memo[MAXN][MAXN]; bool calculated[MAXN][MAXN]; long long calcPrefix(int l, int r) { if(l==0) return prefix[r]; return prefix[r] - prefix[l-1]; } long long calcState(int index, int lastLength) { if(index==n) return 1; if(calculated[index][lastLength]==true) return memo[index][lastLength]; long long answer = 0; for(int i = index;i> n; for(int i = 0;i> a[i]; } prefix[0] = a[0]; for(int i = 1;i