#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[200005], id[200005], sum[2005], minn[2005], f[2005], len;
int mn(int l, int r) {
int q = id[l], w = id[r];
int ans = 1e18;
if (q == w) {
for (int i = l; i <= r; i++) {
ans = min(ans, a[i] + f[q]);
}
return ans;
}
for (int i = l; id[i] == q; i++) {
ans = min(ans, a[i] + f[q]);
}
for (int i = r; id[i] == w; i--) {
ans = min(ans, a[i] + f[w]);
}
for (int i = q + 1; i < w; i++) {
ans = min(ans, minn[i]);
}
return ans;
}
int he(int l, int r) {
int q = id[l], w = id[r];
int ans = 0;
if (q == w) {
for (int i = l; i <= r; i++) {
ans += a[i] + f[q];
}
return ans;
}
for (int i = l; id[i] == q; i++) {
ans += a[i] + f[q];
}
for (int i = r; id[i] == w; i--) {
ans += a[i] + f[w];
}
for (int i = q + 1; i < w; i++) {
ans += sum[i] + f[i] * len;
}
return ans;
}
void gai(int l, int r, int c) {
int q = id[l], w = id[r];
if (q == w) {
for (int i = l; i < r; i++) {
a[i] += c;
}
sum[q] = 0;
minn[q] = 1e18;
for (int i = q * len; id[i] == q; i++) {
minn[q] = min(minn[q], a[i] + f[i]);
sum[q] += a[i];
}
}
for (int i = l; id[i] == q; i++) {
a[i] += c;
}
sum[q] = 0;
minn[q] = 1e18;
for (int i = q * len; id[i] == q; i++) {
minn[q] = min(minn[q], a[i] + f[i]);
sum[q] += a[i];
}
for (int i = r; id[i] == w; i--) {
a[i] += c;
}
sum[w] = 0;
minn[w] = 1e18;
for (int i = w * len; id[i] == w; i++) {
minn[w] = min(minn[w], a[i] + f[i]);
sum[w] += a[i];
}
for (int i = q + 1; i < w; i++) {
f[i] += c;
minn[i] += c;
}
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m;
cin >> n >> m;
len = sqrt(n);
for (int i = 0; i <= len + 1; i++) {
minn[i] = 1e18;
}
for (int i = 0; i < n; i++) {
cin >> a[i];
id[i] = i / len;
minn[id[i]] = min(minn[id[i]], a[i]);
sum[id[i]] += a[i];
}
for (; m--;) {
string s;
cin >> s;
int l, r;
cin >> l >> r;
if (s == "M") {
cout << mn(l - 1, r - 1) << "\n";
} else if (s == "S") {
cout << he(l - 1, r - 1) << "\n";
} else {
int p;
cin >> p;
gai(l - 1, r - 1, p);
}
}
return 0;
}