# Your Task
You have a cuboid with dimensions x,y,z ∈ ℕ. A subcuboid of this cuboid has dimensions length, width, height ∈ ℕ where 1≤length≤x, 1≤width≤y, 1≤height≤z. If two subcuboids have the same length, width, and height, but they are at different positions within the cuboid, they are distinct. Find the total number of subcuboids for the given cuboid.
# Examples
See sample tests and the image below
### 27 subcuboids for a 2×2×2 cuboid
![subcuboids(2,2,2)](https://i.imgur.com/3CnboOW.jpg)

Difficulty: introductory

Starter code:

def subcuboids(x,y,z):
	

Solutions:
def subcuboids(x,y,z):
    return x*y*z*(x+1)*(y+1)*(z+1)//8

def n(x):
    return x * (x+1) // 2

def subcuboids(x, y, z):
    return n(x) * n(y) * n(z)

def subcuboids(x,y,z):
    return (x*(x+1)//2)*(y*(y+1)//2)*(z*(z+1)//2)

def subcuboids(x,y,z):
    return (x + 1) * (y + 1) * (z + 1) * x * y * z // 8

# This was a really fun kata!
# I merely guessed the pattern.
# I reasoned out answers between (1,1,1) and (2,2,2),
# interpolated some educated guesses between the test cases,
# and noticed (if my guesses were right):
# (n, n, n) -> nth triangular number cubed (n*(n+1)/2) ** 3
#
# I struggled for a while to figure out
# what's going on when x and y and z aren't all the same ?
# 
# And then I thought, could it be this simple?
# The xth cubic number times the yth cubic number times the zth cubic number?
# 
# And I ran the sample tests and the answer was yeah lol

# But I failed on my first solution attempt
# Because I forgot to use integer division instead of float division ;(

def subcuboids(x,y,z):
    return (x * (x+1) // 2) * (y * (y+1) // 2) * (z * (z+1) // 2)


def subcuboids(x,y,z):
    return x*(x+1)*y*(y+1)*z*(z+1)//8

subcuboids=lambda Q,W,E:Q*-~Q*W*-~W*E*-~E>>3

subcuboids=lambda x,y,z:x*-~x*y*-~y*z*-~z/8

def subcuboids(x,y,z):
    
    l=(x*(x+1))//2
    m=(y*(y+1))//2
    n=(z*(z+1))//2
    
    return int(l*m*n)

def subcuboids(x,y,z):
    if (x*y*z)%2 == 0:
        return (((x + x**2)//2)*((y + y**2)//2)*((z + z**2)//2))
    else:
        return x*y*z*((x - (((1+x)//2) - 1))*(y - (((1+y)//2) - 1))*(z - (((1+z)//2) - 1)))