import java.util.*;

public class TD3EX1Q4 {
  /**
   * @param pileOne pile d'entrée avec des éléments, en sortie sera vide
   * @param pileTwo pile de sortie avec les éléments de pileOne dans l'ordre inverse , en entrée doit être vide
   */
  public static void inverse(Stack<Integer> pileOne,Stack<Integer> pileTwo) {
    /* BEGIN Solution ex1 */
    while (!pileOne.empty()) {
      pileTwo.push(pileOne.pop());
    }
    /* END Solution */
  }

  public static void main(String []args) {
    Stack<Integer> p1 = new Stack<Integer>();
    Stack<Integer> p2 = new Stack<Integer>();
    Stack<Integer> p3 = new Stack<Integer>();
    Scanner in = new Scanner(System.in);
    while (in.hasNext()) {
      p1.push(in.nextInt());
    }
    System.out.println("p1="+p1+" p2="+p2+" p3="+p3);

    /* Solution éclater p1 dans deux piles celles contenant les pairs et celle
       contenant TOUT p1. Ensuite reprendre celle qui inverse p1 pour la
       reverser dans p1; on reobtient alors p1 comme en entrée. Ensuite utiliser
       cette pile qui vient d'être vidée pour inverser celle contenant les pairs
       inversés de p1 */
    while (!p1.empty()) {
      int element = p1.pop();
      if (element%2==0) // pair
        p3.push(element);
      p2.push(element); // copie tout p1...
    }
    System.out.println("p1="+p1+" p2="+p2+" p3="+p3);
    inverse(p2,p1);
    System.out.println("p1="+p1+" p2="+p2+" p3="+p3);
    inverse(p3,p2);
    System.out.println("p1="+p1+" p2="+p2+" p3="+p3);
  }
}