%%
%class Lexer
%int
L = [A-Za-z_]
D = [0-9]
Ident = {L}({L}|{D})*
Iconst = [-+]?{D}+
String = \"(\\\"|[^\"])*\"
Blank = [ \t\n]+
%%
{Blank}   { /* ignore */ }
while     { return 4; }
{Ident}   { return 1; }
{Iconst}  { return 2; }
{String}  { return 3; }
import java.util.*;
import java.io.*;

public class Sam51 {
  public static void main(String[] args) throws Exception {
    Lexer lex = new Lexer(new InputStreamReader(System.in));
    while(true) {
      int tok = lex.yylex();
      if(tok == Lexer.YYEOF) { break; }
      System.out.printf("%d %s\n", tok, lex.yytext());
    }
  }
}
import java.util.*;
import java.io.*;

public class Sam52 {
  public static void main(String[] args) throws Exception {
    Lexer lex = new Lexer(new InputStreamReader(System.in));
    while(true) {
      int tok = lex.yylex();
      if(tok == Lexer.YYEOF) { break; }
      System.out.printf("%d %s\n", tok, lex.yytext());
    }
  }
}
class Lexer {
  public static final int YYEOF = -1;
  Reader rd;
  int nc;
  String text = "";
  HashMap<String,Integer> map = new HashMap<String,Integer>();
  public Lexer(Reader r) throws Exception {
    rd = r; nc = rd.read(); map.put("while", 4);
  }
  public int yylex() {
    try {
      while(nc == ' ' || nc == '\t' || nc == '\n') { nc = rd.read(); }
      text = "";
      if(nc == YYEOF) {
        // do nothing
      } else if(alpha(nc)) {
        text += (char)nc; nc = rd.read();
        while(alpha(nc) || digit(nc)) { text += (char)nc; nc = rd.read(); } 
        if(map.containsKey(text)) { return map.get(text); }
        return 1;
      } else if(sign(nc) || digit(nc)) {
        text += (char)nc; nc = rd.read();
        while(digit(nc)) { text += (char)nc; nc = rd.read(); } 
        return 2;
      } else {
        System.err.printf("%x: invalid char\n", nc);
        nc = rd.read(); return yylex();
      }
    } catch(IOException ex) { }
    nc = YYEOF; return YYEOF;
  }
  public String yytext() { return text; }
  private boolean alpha(int c) {
    return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
  }
  private boolean digit(int c) { return c >= '0' && c <= '9'; }
  private boolean sign(int c) { return c == '+' || c == '-'; }
}