def METHOD_NAME(X, W, b=None):
    N, C, XL = X.shape
    YL, M, _, KL = W.shape
    def conv(n, m, yl):
        sum = b[yl, m] if b is not None else 0
        for c in range(C):
            for kl in range(KL):
                ll = yl + kl
                sum += X[n, c, ll] * W[yl, m, c, kl]
        return sum
    output = np.zeros((N, M, YL), dtype=np.float32)
    for n in range(N):
        for m in range(M):
            for yl in range(YL):
                output[n, m, yl] = conv(n, m, yl)
    return [output]