RT
#include<bits/stdc++.h>
#pragma GCC optimize("Ofast")
#define int long long
using namespace std;
inline int read(){
register char c = getchar();
register int f = 1,x = 0;
while(c<'0'||c>'9'){
if(c=='-')f = -1;
c = getchar();
}
while(c>='0'&&c<='9')x = (x<<3)+(x<<1)+c-'0',c = getchar();
return x*f;
}
inline void write(register int x){
register int cnt = 20,st[25];
while(x){
st[cnt--] = char(x%10+'0');
x/=10;
}
while(cnt<20)putchar(st[++cnt]);
putchar('\n');
return;
}
int n,m,a[100005],op,x,y,z,i,ans;
int mod(int ax,int bx){
int p = ax-(int)((__int128)ax*(((__int128)1<<64))/bx>>64)*bx;
if(p>=bx)p-=bx;
return p;
}
signed main(){
cin >> n >> m;
for(int i = 1;i<=n;i++)a[i] = read();
while(m--){
op = read();
x = read();
y = read();
if(op==1){
ans = 0;
for(i = x;i+6<=y;i+=7){
ans+=a[i];
ans+=a[i+1];
ans+=a[i+2];
ans+=a[i+3];
ans+=a[i+4];
ans+=a[i+5];
ans+=a[i+6];
}
while(i<=y)ans+=a[i++];
write(ans);
}
else if(op==2){
z = read();
for(i = x;i+6<=y;i+=7){
a[i] = mod(a[i],z);
a[i+1] = mod(a[i+1],z);
a[i+2] = mod(a[i+2],z);
a[i+3] = mod(a[i+3],z);
a[i+4] = mod(a[i+4],z);
a[i+5] = mod(a[i+5],z);
a[i+6] = mod(a[i+6],z);
}
while(i<=y)a[i++]%=z;
}
else a[x] = y;
}
return 0;
}