#include $input int x, y, z, w; $input int N, M, L, K; $input int offset; $assume 0< N && N <= 2; $assume 0< M && M <= 2; $assume 0< L && L <= 2; $assume 0< K && K <= 2; $assume 0 <= x && x < N; $assume 0 <= y && y < M; $assume 0 <= z && z < L; $assume 0 <= w && w < K; $assume 0 <= offset ; $assume (offset + x*M*L*K + y*L*K + z*K + w) < M*N*L*K; void main(){ int realIndex, finalIndex, X, Y, Z, W; realIndex = x * M * L * K + y * L * K + z * K + w; finalIndex = realIndex + offset; X = finalIndex / (M * L * K); finalIndex = finalIndex - X * M * L * K; Y = finalIndex / (L * K); finalIndex = finalIndex - Y * L * K; Z = finalIndex / K; W = finalIndex - Z * K; printf("X=%d, Y=%d, Z=%d, W=%d\n", X,Y,Z,W); $assert X < N; $assert Y < M; $assert Z < L; $assert W < K; }