arr = [1, 1, 2, 3]
indexes = [0] * len(arr)
while 1:
    print(list(map(lambda x: arr[x], indexes)))
    i = len(indexes) - 1
    while 1:
        indexes[i] += 1
        if indexes[i] >= len(arr):
            indexes[i] = 0
            i -= 1
            if i < 0:
                break
            continue
        break
    if i < 0:
        break
