import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.util.Comparator;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.RandomAccess;
import java.util.AbstractList;
import java.io.Writer;
import java.util.List;
import java.io.IOException;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.math.BigInteger;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class Main
{
public static void main
(String[] args
) {
InputReader in = new InputReader(inputStream);
OutputWriter out = new OutputWriter(outputStream);
BoyExercise solver = new BoyExercise();
int T = 1;
for(int count = 0; count < T; count++)
{
solver.solve(count+1, in, out);
}
out.close();
}//end of main()
}
class BoyExercise
{
int N;
int numberOfEx[];
int min[];
int currIndex;
public void solve(int testNumber, InputReader in, OutputWriter out)
{
N = in.readInt();
numberOfEx = new int[N + 1];
min = new int[N + 1];
currIndex = 0;
min[0] = 0;
book[0] = "invalid";
for(int i = 1; i <= N; i++)
{
int numOfExercise = in.readInt();
if(numOfExercise == -1)
{
readBook(out);
}
else
{
if(numOfExercise == 0)
{
in.readString();
continue;
}
currIndex++;
book[currIndex] = in.readString();
numberOfEx[currIndex] = numOfExercise;
if(numOfExercise <= numberOfEx[currIndex - 1])
{
min[currIndex] = currIndex;
}
else
{
min[currIndex] = min[currIndex - 1];
}
//out.print("currIndex:"+currIndex+", book["+currIndex+"] = "+book[currIndex]+" and numberOfEx["+currIndex+"] = "+numberOfEx[currIndex] + "and min["+currIndex+"] = " + min[currIndex] + "\n");
}
}
//out.print(ans+"\n");
}//end of solve()
public void readBook(OutputWriter out)
{
for(int count = 0; count < currIndex; count++)
{
//out.print(min[count + 1] + "::" + book[count + 1] + "\n");
}
int ansA = currIndex - min[currIndex];
String ansB
= book
[min
[currIndex
]];
out.print(ansA + " " + ansB + "\n");
currIndex = min[currIndex] - 1;
}
}//end of class BoyExercise
class InputReader
{
private byte[] buf = new byte[1024];
private int curChar;
private int numChars;
{
this.stream = stream;
}
public int read()
{
if (numChars == -1)
throw new InputMismatchException();
if (curChar >= numChars)
{
curChar = 0;
try
{
numChars = stream.read(buf);
}
{
throw new InputMismatchException();
}
if (numChars <= 0)
return -1;
}
return buf[curChar++];
}
public int readInt()
{
int c = read();
while (isSpaceChar(c))
c = read();
int sgn = 1;
if (c == '-')
{
sgn = -1;
c = read();
}
int res = 0;
do
{
if (c < '0' || c > '9')
throw new InputMismatchException();
res *= 10;
res += c - '0';
c = read();
}
while (!isSpaceChar(c));
return res * sgn;
}
{
StringBuilder sb = new StringBuilder();
int c = read();
while (isWhiteSpace(c))
{
c = read();
}
while (!isWhiteSpace(c))
{
sb.appendCodePoint(c);
c = read();
}
return sb.toString();
}
public static boolean isWhiteSpace(int c)
{
return c >= -1 && c <= 32;
}
public static boolean isSpaceChar(int c)
{
return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
}
}
class OutputWriter
{
{
}
public OutputWriter
(Writer writer
) {
}
public void print
(Object...
objects) {
for (int i = 0; i < objects.length; i++)
{
if (i != 0)
writer.print(' ');
writer.print(objects[i]);
}
}
public void printLine
(Object...
objects) {
print(objects);
writer.println();
}
public void close()
{
writer.close();
}
}