Cubes

题目描述

[problemUrl]: https://atcoder.jp/contests/code-festival-2017-qualc/tasks/code_festival_2017_qualc_e 一辺の長さが $ 1 $ の立方体の形をしたブロックを $ ABC $ 個積み上げて $ A\ \times\ B\ \times\ C $ の直方体を作りました。 さらに、この直方体を以下の条件を満たすように $ xyz $ 空間内に配置しました。 - すべての $ i,\ j,\ k $ ($ 0\ \leq\ i\ <\ A,\ 0\ \leq\ j\ <\ B,\ 0\ \leq\ k\ <\ C $) に対して、 点 $ (i,\ j,\ k) $ と点 $ (i\ +\ 1,\ j\ +\ 1,\ k\ +\ 1) $ を結ぶ線分を対角線として持ち、すべての辺が座標軸と平行なブロックが存在する。 各 $ i,\ j,\ k $ に対して、上のようなブロックをブロック $ (i,\ j,\ k) $ と呼ぶことにします。 $ 2 $ つのブロック $ (i_1,\ j_1,\ k_1) $ と $ (i_2,\ j_2,\ k_2) $ に対して、これらの距離を max$ (|i_1\ -\ i_2|,\ |j_1\ -\ j_2|,\ |k_1\ -\ k_2|) $ と定義します。 いま、点 $ (0,\ 0,\ 0) $ と点 $ (A,\ B,\ C) $ を結ぶ線分に沿って、直方体に十分細い針金を通しました。 このとき、以下の条件を満たすブロック $ (x,\ y,\ z) $ の個数を $ 10^9\ +\ 7 $ で割った余りを求めてください。 - ある針金が通っている(境界で接する場合は除く)ブロック $ (x',\ y',\ z') $ が存在して、ブロック $ (x,\ y,\ z) $ とブロック $ (x',\ y',\ z') $ の距離は $ D $ 以下である。

输入输出格式

输入格式


入力は以下の形式で標準入力から与えられる。 > $ A $ $ B $ $ C $ $ D $

输出格式


条件を満たすブロックの個数を $ 10^9\ +\ 7 $ で割った余りを出力せよ。

输入输出样例

输入样例 #1

3 4 5 1

输出样例 #1

54

输入样例 #2

1 2 3 0

输出样例 #2

4

输入样例 #3

3 5 7 100

输出样例 #3

105

输入样例 #4

3 123456781 1000000000 100

输出样例 #4

444124403

输入样例 #5

1234 12345 1234567 5

输出样例 #5

150673016

输入样例 #6

999999997 999999999 1000000000 50000

输出样例 #6

8402143

说明

### 制約 - $ 1\ \leq\ A\ <\ B\ <\ C\ \leq\ 10^{9} $ - $ A,\ B,\ C $ はどの $ 2 $ つも互いに素 - $ 0\ \leq\ D\ \leq\ 50,000 $ ### Sample Explanation 1 以下の図は、直方体を $ xy $ 平面に平行な平面で $ 5 $ 段に分けて描いたものです。 ただし、$ i\ -\ 1\ \leq\ z\ \leq\ i $ の範囲に含まれるブロックを $ i $ 段目と呼んでいます。 黒く塗ったブロックは針金が通っているブロックであり、これらはすべて条件を満たします。 また、黄色く塗ったブロックはそれら以外で条件を満たすブロックです。 !\[b3a8ffcd8621b59d4657bfaa9c25a716.png\](https://img.atcoder.jp/code-festival-2017-qualc/b3a8ffcd8621b59d4657bfaa9c25a716.png) 黒または黄色に塗られたブロックは全部で $ 54 $ 個存在します。 ### Sample Explanation 2 針金が通っているブロックは $ 4 $ 個あり、これらだけが条件を満たします。 ### Sample Explanation 3 すべてのブロックが条件を満たします。