def valid_stack_sequences(pushed, popped):
    if len(pushed) != len(popped):
        return False
    stack = []
    j = 0
    for value in pushed:
        stack.append(value)
        while stack and j < len(popped) and stack[-1] == popped[j]:
            stack.pop()
            j += 1
    return j == len(popped)
