import
java.util.ArrayList;
import
java.util.List;
public
class
Main {
static
List<Integer> kTransformation(
int
n,
int
m,
int
k,
List<List<Integer>> grid,
int
q, List<List<Integer>> queries) {
List<List<List<Integer>>> pre =
new
ArrayList<>();
for
(
int
i =
0
; i <= n; i++) {
List<List<Integer>> temp1 =
new
ArrayList<>();
for
(
int
j =
0
; j <= m; j++) {
List<Integer> temp2 =
new
ArrayList<>();
for
(
int
l =
0
; l <
6
; l++) {
temp2.add(
0
);
}
temp1.add(temp2);
}
pre.add(temp1);
}
for
(
int
i =
0
; i < n; i++) {
for
(
int
j =
0
; j < m; j++) {
pre.get(i).get(j).set(grid.get(i).get(j),
pre.get(i).get(j).get(grid.get(i).get(j)) +
1
);
for
(
int
k1 =
0
; k1 <=
5
; k1++) {
if
(i -
1
>=
0
)
pre.get(i).get(j).set(k1,
pre.get(i).get(j).get(k1) + pre.get(i -
1
).get(j).get(k1));
if
(j -
1
>=
0
)
pre.get(i).get(j).set(k1,
pre.get(i).get(j).get(k1) + pre.get(i).get(j -
1
).get(k1));
if
(i -
1
>=
0
&& j -
1
>=
0
)
pre.get(i).get(j).set(k1,
pre.get(i).get(j).get(k1) - pre.get(i -
1
).get(j -
1
).get(k1));
}
}
}
List<Integer> ans =
new
ArrayList<>();
for
(List<Integer> i : queries) {
int
t = i.get(
0
);
int
val = i.get(
1
);
int
l1 = i.get(
2
);
int
r1 = i.get(
3
);
int
l2 = i.get(
4
);
int
r2 = i.get(
5
);
List<Integer> cnt =
new
ArrayList<>();
for
(
int
j =
0
; j <=
5
; j++) {
cnt.add(pre.get(l2).get(r2).get(j));
if
(l1 -
1
>=
0
) {
cnt.set(j, cnt.get(j) - pre.get(l1 -
1
).get(r2).get(j));
}
if
(r1 -
1
>=
0
) {
cnt.set(j, cnt.get(j) - pre.get(l2).get(r1 -
1
).get(j));
}
if
(l1 -
1
>=
0
&& r1 -
1
>=
0
) {
cnt.set(j, cnt.get(j) + pre.get(l1 -
1
).get(r1 -
1
).get(j));
}
}
int
c =
0
;
for
(
int
j =
0
; j <=
5
; j++) {
if
(((j + t) % k) == val) {
c += cnt.get(j);
}
}
ans.add(c);
}
return
ans;
}
public
static
void
main(String[] args) {
int
n =
2
;
int
m =
2
;
int
k =
3
;
List<List<Integer>> grid = List.of(List.of(
0
,
1
), List.of(
2
,
2
));
int
q =
1
;
List<List<Integer>> queries = List.of(List.of(
1
,
0
,
0
,
0
,
1
,
1
));
List<Integer> ans = kTransformation(n, m, k, grid, q, queries);
for
(
int
a : ans) {
System.out.print(a +
" "
);
}
}
}