func_code_string: #include <bits/stdc++.h>   using namespace std;   long long N, M;   long long Arb[800002], Value[100002], Lazy[800002], Colour[800002];   void Build(long long K, long long L, long long R) {     long long Mid = (L + R) / 2;     if (L == R) {       Colour[K] = L;       return;     }     Build(2 * K, L, Mid);     Build(2 * K + 1, Mid + 1, R);   }   void Read() { cin >> N >> M; }   void Relax(long long K, long long L, long long R) {     if (Lazy[K] == 0) return;     Colour[2 * K] = Colour[2 * K + 1] = Colour[K];     Arb[2 * K] += Lazy[K] * ((L + R) / 2 - L + 1);     Arb[2 * K + 1] += Lazy[K] * (R - (L + R) / 2);     if (L != R) {       Lazy[2 * K] += Lazy[K];       Lazy[2 * K + 1] += Lazy[K];     }     Lazy[K] = 0;   }   void Update(long long K, long long L, long long R, long long Poz1,               long long Poz2, long long Val) {     long long Mid = (L + R) / 2;     Relax(K, L, R);     if (L > Poz2 || R < Poz1 || K > 4 * N) return;     if (Poz1 <= L && R <= Poz2) {       if (Colour[K] > 0) {         Arb[K] += abs(Colour[K] - Val) * (R - L + 1);         Lazy[K] += abs(Colour[K] - Val);         Colour[K] = Val;       } else {         Update(K * 2, L, Mid, Poz1, Poz2, Val);         Update(K * 2 + 1, Mid + 1, R, Poz1, Poz2, Val);         Arb[K] = Arb[2 * K] + Arb[2 * K + 1];         Colour[K] = Val;       }       return;     }     Update(2 * K + 1, Mid + 1, R, Poz1, Poz2, Val);     Update(2 * K, L, Mid, Poz1, Poz2, Val);     Arb[K] = Arb[2 * K] + Arb[2 * K + 1];     Colour[K] = Colour[K * 2] == Colour[K * 2 + 1] ? Colour[K * 2] : 0;   }   long long Qwery(long long K, long long L, long long R, long long Poz1,                   long long Poz2) {     Relax(K, L, R);     long long Mid = (L + R) / 2;     if (L > Poz2 || R < Poz1) return 0;     if (Poz1 <= L && R <= Poz2) return Arb[K];     return Qwery(2 * K, L, Mid, Poz1, Poz2) +            Qwery(2 * K + 1, Mid + 1, R, Poz1, Poz2);   }   void Browse() {     long long i;     for (i = 1; i <= M; i++) {       long long type, a, b, c;       cin >> type >> a >> b;       if (type == 1) {         cin >> c;         Update(1, 1, N, a, b, c);       }       if (type == 2) cout << Qwery(1, 1, N, a, b) <<   n ;     }   }   int main() {     Read();     Build(1, 1, N);     Browse();     return 0;   }   