#include <iostream>
#include <algorithm>
#include <fstream>
#include <vector>
using namespace std;

struct elem {
    long long sum, l, lazy;
    elem(long long _sum = 0, long long _l = 0, long long _lazy = 0) {
        sum = _sum;
        l = _l;
        lazy = _lazy;
    }
};

const int MAX_M = 100100;

elem aint[4 * MAX_M];
int v[MAX_M];

elem merge(elem &a, elem &b, int lz = 0) {
    return elem(a.sum + b.sum + a.l * a.lazy + b.l * b.lazy, a.l + b.l, lz);
} //TODO(modifica)

void build(int nod, int st, int dr) {
    if(st == dr) {
        aint[nod] = elem(v[st], 1, 0);
        return;
    }

    int mij = (st + dr) / 2;

    build(nod * 2, st, mij);
    build(nod * 2 + 1, mij + 1, dr);
    aint[nod] = merge(aint[nod * 2], aint[nod * 2 + 1]);
}

long long query(int nod, int st, int dr, int a, int b, long long lz) {
    lz += aint[nod].lazy;
    if(st >= a && dr <= b) {
        return aint[nod].sum + aint[nod].l * lz;
    }

    long long ans = 0;
    int mij = (st + dr) / 2;
    if(a <= mij) {
        ans += query(nod * 2, st, mij, a, b, lz);
    }
    if(b > mij) {
        ans += query(nod * 2 + 1, mij + 1, dr, a, b, lz);
    }
    return ans;
}

void update(int nod, int st, int dr, int a, int b, long long val) {
    if(st >= a && dr <= b) {
        aint[nod].lazy += val;
        return;
    }

    int mij = (st + dr) / 2;
    if(a <= mij) {
        update(nod * 2, st, mij, a, b, val);
    }
    if(b > mij) {
        update(nod * 2 + 1, mij + 1, dr, a, b, val);
    }

    aint[nod] = merge(aint[2 * nod], aint[2 * nod + 1], aint[nod].lazy);
}

int main()
{
    //ifstream cin("fis.in");
    //ofstream cout("fis.out");

    int n, m;
    cin >> n >> m;
    for(int i = 1; i <= m; i++) {
        cin >> v[i];
    }

    int sz;
    for(sz = 1; sz < m; sz *= 2);
    build(1, 1, sz);

    long long s = 0;
    for(int i = 2; i <= n; i++) {
        int p, x, y, v, z, t;
        cin >> p >> x >> y >> v >> z  >> t;
        //ignora p = 30 puncte
        int l = (x + s) % m + 1;
        int r = (y + s) % m + 1;
        update(1, 1, sz, l, r, v);

        l = (z + s) % m + 1;
        r = (t + s) % m + 1;
        s = query(1, 1, sz, l, r, 0);
        cout << s << '\n';
    }

    return 0;
}
