{"trustable":true,"prependHtml":"\u003cscript\u003e window.katexOptions \u003d { disable: true }; \u003c/script\u003e\n\u003cscript type\u003d\"text/x-mathjax-config\"\u003e\n MathJax.Hub.Config({\n tex2jax: {\n inlineMath: [[\u0027$$$\u0027,\u0027$$$\u0027], [\u0027$\u0027,\u0027$\u0027]],\n displayMath: [[\u0027$$$$$$\u0027,\u0027$$$$$$\u0027], [\u0027$$\u0027,\u0027$$\u0027]]\n }\n });\n\u003c/script\u003e\n\u003cscript async src\u003d\"https://mathjax.codeforces.org/MathJax.js?config\u003dTeX-AMS-MML_HTMLorMML\" type\u003d\"text/javascript\"\u003e\u003c/script\u003e","sections":[{"title":"","value":{"format":"HTML","content":"\u003cdiv class\u003d\"panel_content\"\u003eAnh ếch đã học cấu trúc dữ liệu cơ bản gần đây, đó là ngăn xếp. Có một số hoạt động cơ bản của ngăn xếp:\u003cbr\u003e\u003cbr\u003e$\\bullet $ PUSH x: đặt x lên đỉnh của ngăn xếp, x phải là 0 hoặc 1.\u003cbr\u003e$\\bullet $ POP: đẩy phần tử ở đỉnh của ngăn xếp ra ngoài.\u003cbr\u003e\u003cbr\u003eVì quá đơn giản với anh ếch, một nhà toán học nổi tiếng có thể dễ dàng chứng minh \"Năm điểm cùng tồn tại trên một đường tròn\", anh ấy nghĩ ra một số hoạt động thú vị:\u003cbr\u003e\u003cbr\u003e$\\bullet $REVERSE: Đảo ngược ngăn xếp, phần tử dưới cùng trở thành phần tử đứng đầu của ngăn xếp, và phần tử ngay trên phần tử dưới cùng trở thành phần tử ngay dưới phần tử đứng đầu... và cứ thế.\u003cbr\u003e$\\bullet $QUERY: In ấn giá trị được thu được theo cách như sau: Lấy phần tử từ đỉnh đến đáy, sau đó thực hiện phép toán \u003cb\u003eNAND\u003c/b\u003e từ trái sang phải, tức là Nếu\u0026nbsp;\u0026nbsp;$a_{top},a_{top-1},\\cdots , a_1$ tương ứng với phần tử của ngăn xếp từ đỉnh đến đáy, $value \u003d a_{top}$ nand $a_{top-1}$ nand ... nand $a_1$. Lưu ý rằng ngăn xếp \u003cb\u003esẽ không\u003c/b\u003e thay đổi sau khi thực hiện hoạt động QUERY. Đặc biệt, nếu ngăn xếp hiện tại rỗng, bạn cần in ra \"Invalid.\" (không có dấu ngoặc kép).\u003cbr\u003e\u003cbr\u003eBy the way, \u003cb\u003eNAND\u003c/b\u003e là một phép toán nhị phân cơ bản:\u003cbr\u003e\u003cbr\u003e$\\bullet $ 0 nand 0 \u003d 1\u003cbr\u003e$\\bullet $ 0 nand 1 \u003d 1\u003cbr\u003e$\\bullet $ 1 nand 0 \u003d 1\u003cbr\u003e$\\bullet $ 1 nand 1 \u003d 0\u003cbr\u003e\u003cbr\u003eVì anh ếch cần phải đóng góp một chút, bạn nên giúp anh ấy hoàn thành cấu trúc dữ liệu này: in ra câu trả lời cho mỗi QUERY, hoặc cho anh ấy biết rằng đó là không hợp lệ.\u003cbr\u003e\u003c/div\u003e"}},{"title":"Nhập","value":{"format":"HTML","content":"Dòng đầu tiên chứa chỉ một số nguyên T ($T \\leq 20$), cho biết số lượng bài kiểm tra.\u003cbr\u003e\u003cbr\u003eĐối với mỗi bài kiểm tra, dòng đầu tiên chứa chỉ một số nguyên N ($2 \\leq N \\leq 200000$), cho biết số lượng hoạt động.\u003cbr\u003e\u003cbr\u003eỞ N dòng tiếp theo, dòng thứ i chứa một trong các hoạt động sau:\u003cbr\u003e\u003cbr\u003e$\\bullet $ PUSH x (x \u003cb\u003ephải\u003c/b\u003e là 0 hoặc 1)\u003cbr\u003e$\\bullet $ POP\u003cbr\u003e$\\bullet $ REVERSE\u003cbr\u003e$\\bullet $ QUERY\u003cbr\u003e\u003cbr\u003eĐảm bảo rằng ngăn xếp hiện tại sẽ không rỗng khi thực hiện hoạt động POP.\u003cbr\u003e"}},{"title":"Xuất","value":{"format":"HTML","content":"Đối với mỗi bài kiểm tra, đầu tiên in ra một dòng \"Case #x: w, trong đó x là số thứ tự của bài kiểm tra (bắt đầu từ 1). Sau đó là một số dòng, dòng thứ i chứa một số nguyên chỉ ra câu trả lời cho hoạt động QUERY thứ i. Đặc biệt, nếu hoạt động QUERY thứ i không hợp lệ, chỉ cần in ra \"\u003cb\u003eInvalid.\u003c/b\u003e\" (không có dấu ngoặc kép). (Vui lòng xem ví dụ để biết thêm chi tiết.)\u003cbr\u003e"}},{"title":"Ví dụ","value":{"format":"HTML","content":"\u003ctable class\u003d\u0027vjudge_sample\u0027\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e2\r\n8\r\nPUSH 1\r\nQUERY\r\nPUSH 0\r\nREVERSE\r\nQUERY\r\nPOP\r\nPOP\r\nQUERY\r\n3\r\nPUSH 0\r\nREVERSE\r\nQUERY\r\n\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003eCase #1:\r\n1\r\n1\r\nInvalid.\r\nCase #2:\r\n0\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e"}},{"title":"Gợi ý","value":{"format":"HTML","content":"\u003cbr\u003eTrong ví dụ đầu tiên: trong lần truy vấn đầu tiên, ngăn xếp chỉ chứa một phần tử 1, vì vậy câu trả lời là 1. sau đó trong lần truy vấn thứ hai, ngăn xếp chứa 0, l\u003cbr\u003e(từ dưới lên trên), vì vậy câu trả lời cho lần thứ hai cũng là 1. Trong lần truy vấn thứ ba, không có phần tử nào trong ngăn xếp, vì vậy bạn nên in ra Invalid. \u003cbr\u003e"}}]}