import
java.util.Scanner;
public
class
BIT3D {
static
long
[][][] BIT;
static
int
N;
static
void
updateQuery(
int
x,
int
y,
int
z,
long
val) {
for
(
int
i = x; i <= N +
1
; i += i & -i) {
for
(
int
j = y; j <= N +
1
; j += j & -j) {
for
(
int
k = z; k <= N +
1
; k += k & -k) {
BIT[i][j][k] += val;
}
}
}
}
static
long
sumQuery(
int
x,
int
y,
int
z) {
long
sum =
0
;
for
(
int
i = x; i >
0
; i -= i & -i) {
for
(
int
j = y; j >
0
; j -= j & -j) {
for
(
int
k = z; k >
0
; k -= k & -k) {
sum += BIT[i][j][k];
}
}
}
return
sum;
}
static
long
matrixSumQuery(
int
x,
int
y,
int
z,
int
X,
int
Y,
int
Z) {
return
sumQuery(X, Y, Z) - sumQuery(x -
1
, Y, Z) - sumQuery(X, y -
1
, Z) - sumQuery(X, Y, z -
1
)
+ sumQuery(x -
1
, y -
1
, z -
1
) - sumQuery(x -
1
, Y, z -
1
) - sumQuery(X, y -
1
, z -
1
)
+ sumQuery(x -
1
, y -
1
, Z) + sumQuery(x -
1
, Y, z) + sumQuery(X, y -
1
, z);
}
public
static
void
main(String[] args) {
Scanner sc =
new
Scanner(System.in);
N =
10
;
int
Q =
6
;
BIT =
new
long
[N +
2
][N +
2
][N +
2
];
long
[][] queries = { {
1
,
0
,
0
,
6
,
6
}, {
1
,
9
,
9
,
9
,
10
}, {
1
,
8
,
5
,
9
,
5
}, {
2
,
3
,
4
,
5
,
9
,
10
,
9
},
{
1
,
6
,
6
,
1
,
23
}, {
2
,
0
,
0
,
0
,
8
,
9
,
10
} };
for
(
int
i =
0
; i < Q; i++) {
int
type = (
int
) queries[i][
0
];
if
(type ==
1
) {
int
x = (
int
) queries[i][
1
];
int
y = (
int
) queries[i][
2
];
int
z = (
int
) queries[i][
3
];
long
val = queries[i][
4
];
updateQuery(x +
1
, y +
1
, z +
1
, val);
}
else
{
int
x = (
int
) queries[i][
1
];
int
y = (
int
) queries[i][
2
];
int
z = (
int
) queries[i][
3
];
int
X = (
int
) queries[i][
4
];
int
Y = (
int
) queries[i][
5
];
int
Z = (
int
) queries[i][
6
];
System.out.println(matrixSumQuery(x, y, z, X +
1
, Y +
1
, Z +
1
));
}
}
sc.close();
}
}