#include using namespace std; const int N = 100000; int n; int tree[2 * N]; int a[2 * N]; void build() { for (int i=0; i 0; --i) tree[i] = tree[i<<1] + tree[i<<1 | 1]; } void update(int l, int r, int value) { for(int i=l;i<=r;i++) { tree[i+n] = value-tree[i+n]; } r = r+n; for (int i = n - 1; i > 0; --i) tree[i] = tree[i<<1] + tree[i<<1 | 1]; } int query(int l, int r) { int sum = 0; for (l += n, r += n; l < r; l >>= 1, r >>= 1) { if (l&1) sum += tree[l++]; if (r&1) sum += tree[--r]; } return sum; } int main() { freopen("accounting.in","r",stdin); freopen("accounting.out","w",stdout); int t; cin>>n>>t; for(int i=0; i>a[i]; } build(); for(int i=0; i>op; if(op=='-') { int l,r,val; cin>>l>>r>>val; l--; r--; update(l,r,val); } if(op=='?') { int l,r; cin>>l>>r; l--; //r--; cout<