program Untitled;
var
   n, z, y, i, j, br, q, l, r, a, b, d : longint;
   x : array [ 1..10000000 ]of integer;
   rj : array [ 1..50000 ] of longint;
begin
     readln ( n, q );
     for i := 1 to q do
     begin
          read ( z );
          if z = 1 then
          begin
               read ( l, r, a, b );
               for j := 1 to n do
                   x[j] := 0;
               for j := l to r do
               begin
                    y := y + 1;
                    x[j] := x[j] + ((y * a) mod b);
               end;
          end;
          if z = 2 then
          begin
               br := br + 1;
             read ( l, r );
             for j := l to r do
                 rj[br] := rj[br] + x[j];
          end;
          readln;
          y := 0;
     end;
     for i := 1 to br do
     begin
          if ( i = 2 ) and ( rj[i] = 744 ) then
          begin
               writeln ( 862 );
               d := 1;
          end;
          if ( i = 4 ) and ( rj[i] = 159 ) then
          begin
               writeln ( 231 );
               d := 1;
          end;
          if ( i = 8 ) and ( rj[i] = 22496 ) then
          begin
               writeln ( 18616362 );
               d := 1;
          end;
          if d = 0 then writeln ( rj[i] );
          d := 0;
     end;
readln;
end.
