class CQueue {
    Stack<Integer> A;
    Stack<Integer> B;

    public CQueue() {
        A = new Stack<>();
        B = new Stack<>();
    }
    //入队
    public void appendTail(int value) {
        B.push(value);
    }
    //出队
    // 栈B存的是队列的倒序 所以出队时候要将其转到栈A,这样栈A才是正序的
    public int deleteHead() {
        if(A.isEmpty() && B.isEmpty())  //当AB都为空则队列为空
            return -1;
        if(A.isEmpty()){  //当A为空,将B中的转换过来
            while(!B.isEmpty()){
                A.push(B.pop());
            }
        }
        return A.pop();  //栈A的栈顶出栈就是队列的头部出队
    }
}