#include #if __has_include() #include using namespace atcoder; #endif #define rep(i, n) for (int i = 0; i < (n); ++i) using std::cin; using std::cout; using std::min; using std::vector; using ll = long long; const ll INF = 1e18; ll op(ll a, ll b) { return min(a, b); } ll e() { return INF; } ll mapping(ll f, ll x) { return f + x; } ll composition(ll f, ll g) { return f + g; } ll id() { return 0; } int main() { int n; cin >> n; vector a(n); rep(i, n) cin >> a[i]; lazy_segtree t(a); int q; cin >> q; rep(qi, q) { int k, l, r, c; cin >> k >> l >> r >> c; --l; if (k == 1) { t.apply(l, r, c); } else { cout << t.prod(l, r) << '\n'; } } return 0; }