def prev_smaller(a):
    n = len(a)
    pos = [-1]*n
    stack = []
    for i in range(n):
        while stack and stack[-1][1] >= a[i]:
            stack.pop()
        if stack:
            pos[i] = stack[-1][0]
        stack.append((i, a[i]))
    return pos

a = [1, 2, 4, 3, 2, 8, 7, 12, 3, 2, 1]
print(prev_smaller(a))
