using
System;
using
System.Collections.Generic;
using
System.Linq;
public
class
MainClass {
public
static
void
IncrementRange(
int
[] arr,
int
L,
int
R,
int
K,
int
M)
{
for
(
int
i = L; i <= R; i++) {
arr[i] = (arr[i] + K) % M;
}
}
public
static
void
PrintRange(
int
[] arr,
int
L,
int
R)
{
for
(
int
i = L; i <= R; i++) {
Console.Write(arr[i] +
" "
);
}
Console.WriteLine();
}
public
static
void
Update(
int
[] arr,
int
N,
int
M,
int
Q,
List<List<
int
> > queries)
{
for
(
int
i = 0; i < Q; i++) {
if
(queries[i][0] == 1) {
IncrementRange(arr, queries[i][1],
queries[i][2], queries[i][3],
M);
}
else
if
(queries[i][0] == 2) {
PrintRange(arr, queries[i][1],
queries[i][2]);
}
}
}
public
static
void
Main()
{
int
N = 5, M = 8, Q = 5;
int
[] arr = { 2, 2, 7, 2, 5 };
List<List<
int
> > queries =
new
List<List<
int
> >();
queries.Add(
new
List<
int
>{ 1, 0, 3, 4 });
queries.Add(
new
List<
int
>{ 1, 4, 4, 2 });
queries.Add(
new
List<
int
>{ 1, 0, 0, 7 });
queries.Add(
new
List<
int
>{ 2, 1, 3 });
queries.Add(
new
List<
int
>{ 2, 3, 3 });
Update(arr, N, M, Q, queries);
}
}