Finding Paths

Compute the number of paths in 3D cartesian space from (0, 0, 0) to (n, m, k), where n, m, k are positive integers, such that each step consist of going from (x, y, z) to one of {(x+1,y+1,z+1),(x,y+1,z+1),(x+1,y,z+1),(x+1,y+1,z),(x+1,y,z),(x,y+1,z),(x,y,z+1)} Additionally, in at least one of the steps in each path, we end up going from (x,y,z) to one of {(x + 1, y + 1, z + 1), (x, y + 1, z + 1), (x + 1, y, z + 1), (x + 1, y + 1, z)}. Input A number of of inputs (≤ 200), with n, m, k on each line separated by a single space, such that 0 < n,m,k ≤ 1000. Output For each input, output the number of paths modulo 1000000007. Sample Input 111 123 Sample Output 7 179