{"trustable":false,"sections":[{"title":"题意","value":{"format":"PLAIN","content":"有一个专门为了集合运算而设计的“集合栈”计算机。该机器有一个开始为空的栈并且支持以下操作。\n1.PUSH:空集“{}”入栈。\n2.DUP:把当前栈顶元素复制一份后在入栈。\n3.UNION:出栈两个集合,然后把二者的并集入栈。\n4.INTERSECT:出栈两个集合,然后把二者的交集入栈。\n5.ADD:出栈两个集合,然后把先出栈的集合加入到后出栈的集合中,把结果入栈。\n\n例如,栈顶元素是A \u003d { {},{{}} },下一个元素是B \u003d { {}, {{{}}} },则:\nUNION 操作将得到{ {}, {{}}, {{{}}} },输出3.\nINTERSECT 操作将得到{ {} },输出1。\nADD 操作将得到{ {}, {{{}}},{{} , {{}}} },输出3。\n"}},{"title":"输入","value":{"format":"PLAIN","content":"第一行有一个整数T(0\u003c\u003dT\u003c\u003d5)表示有T组测试数据。\n每组测试数据有N(0\u003c\u003dN\u003c\u003d2000)次操作,保证操作均能顺利进行(不需要对空栈执行出栈操作)。"}},{"title":"输出","value":{"format":"PLAIN","content":"对于输入中指定的每个操作,输出栈顶集合的大小(即元素个数)并换行。\n每组测试数据后输出一行“***”。"}},{"title":"样例输入","value":{"format":"PLAIN","content":"2\n9\nPUSH\nDUP\nADD\nPUSH\nADD\nDUP\nADD\nDUP\nUNION\n5\nPUSH\nPUSH\nADD\nPUSH\nINTERSECT"}},{"title":"样例输出","value":{"format":"PLAIN","content":"0\n0\n1\n0\n1\n1\n2\n2\n2\n***\n0\n0\n1\n0\n0\n***"}}]}