def stack_search(x, deq, stack):
    """Solution to exercise C-6.27.

    Suppose you have a stack S containing n elements and a queue Q that is
    initially empty. Describe how you can use Q to scan S to see if it
    contains a certain element x, with the additional constraint that your
    algorithm must return the elements back to S in their original order. You
    may only use S, Q, and a constant number of other variables.
    """
    x_found = False
    for _ in range(len(stack)):
        deq.append(stack.pop())
        if deq[-1] == x:
            x_found = True
    for _ in range(len(deq)):
        stack.push(deq.pop())  # Put elements back in original order
    return x_found