


PlatesStack(int N) - Constructor to initialize the object where N denotes the maximum capacity of each stack.
push(int value) - This function inserts the integer "value" in the leftmost stack which is not filled up to the maximum capacity.
pop() - This function returns the value at the top of the rightmost stack which is not empty and removes it from that stack or returns -1 if all the stacks are empty.
popAtStack(int index) - This function returns the value at the top of the stack with the given index and removes it from that stack and returns -1 if that stack is empty.
TYPE 1 corresponds to the push operation.
TYPE 2 corresponds to the pop operation.
TYPE 3 corresponds to the popAtStack operation.
The first line contains a single integer T denoting the number of test cases. The test cases follow.
The first line of each test case contains an integer N denoting the maximum capacity of the stacks.
The second line of each test case contains an integer Q denoting the number of queries to be answered.
The next Q lines contain two integers TYPE and X separated by a single space. The integer TYPE denotes the type of the query and X denotes the value or the index of the stack on which the operation is to be performed.
For TYPE-2 query, value of X is always -1. You can ignore this integer.
For each query of type 2 print the value at the top of the rightmost stack or print -1 if all the stacks are empty.
For each query of type 3 print the value at the top of the stack with the given index or print -1 if the stack at the given index is empty.
Print the answer for query in a separate line.
You do not need to print anything. It has already been taken care of. Just implement the given class.
1 <= T <= 5
1 <= N <= 10
1 <= Q <= 1000
1 <= TYPE <= 3
1 <= value <= 10^9
Where "value" is the integer to be inserted into the stack or the index of the stack depending on the type of the query.
Time Limit: 1 sec
The idea is to maintain pointers to keep track of where to push or to pop an element. And whenever push or pop is called, update the pointers accordingly. For keeping track of stack pointers let’s define a HashMap in which the key will be an integer and the value will be a stack of integers.