#include <bits/stdc++.h>
#define int __int128
#define maxn 40000005
#define maxm 100005
using namespace std;
const int mod = (1 << 30);
int n, type, f[maxn], pre[maxn], l, r;
long long b[maxn], x, y, z, m, p[maxm], ll[maxm], rr[maxm], a[maxn], q[maxn], g[maxn];
int read()
{
int x=0,flag=1;char c;
while((c=getchar())<'0' || c>'9') if(c=='-') flag=-1;
while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^'0'),c=getchar();
return x*flag;
}
void write(int x)
{
if(x>9) write(x/10);
putchar(x%10+'0');
}
signed main() {
n = read(), type = read();
if(type) {
x = read(), y = read(), z = read(), b[1] = read(), b[2] = read(), m = read();
// scanf("%lld%lld%lld%lld%lld%lld", &x, &y, &z, &b[1], &b[2], &m);
for(int i = 1;i <= m;i ++) p[i] = read(), ll[i] = read(), rr[i] = read();
for(int i = 3;i <= n;i ++) b[i] = (0ll + 1ll * b[i - 1] * x + 1ll * b[i - 2] * y + z) % mod;
for(int i = 1;i <= m;i ++) for(int j = p[i - 1] + 1;j <= p[i]; j ++) a[j] = (b[j] % (rr[i] - ll[i] + 1)) + ll[i];
}
else for(int i = 1;i <= n;i++) a[i] = read();
for(int i = 1;i <= n;i++) pre[i] = pre[i - 1] + a[i];
l = 1, r = 0;
for(int i = 1;i <= n;i++) {
while(l <= r && pre[i] - pre[q[l]] >= g[q[l]]) l ++;
f[i] = f[q[l - 1]] + (pre[i] - pre[q[l - 1]]) * (pre[i] - pre[q[l - 1]]);
g[i] = pre[i] - pre[q[l - 1]];
while(l <= r && g[q[r]] + pre[q[r]] > g[i] + pre[i]) r --;
q[++r] = i;
}
write(f[n]);
}
空间炸裂, 1GB都不够用, 出题人怎么想到把 n 弄到4e7的?