package reverse;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


/**
 * @author Nikita Doschennikov (me@fymio.us)
 */
public class FastScanner {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String line = null;
    int pos = 0;

    boolean hasNextLine() throws IOException {
        if (line != null && pos < line.length()) return true;
        line = br.readLine();
        pos = 0;
        return line != null;
    }

    boolean hasNextInt() {
        if (line == null) return false;
        while (pos < line.length() && (Character.isWhitespace(line.charAt(pos)) ||
                Character.getType(line.charAt(pos)) == Character.START_PUNCTUATION ||
                Character.getType(line.charAt(pos)) == Character.END_PUNCTUATION)) {
            pos++;
        }
        return pos < line.length() && (Character.isDigit(line.charAt(pos)) || line.charAt(pos) == '-');
    }

    int nextInt() {
        while (pos < line.length() && (Character.isWhitespace(line.charAt(pos)) ||
                Character.getType(line.charAt(pos)) == Character.START_PUNCTUATION ||
                Character.getType(line.charAt(pos)) == Character.END_PUNCTUATION)) {
            pos++;
        }

        int start = pos;
        boolean negative = line.charAt(pos) == '-';
        if (negative) pos++;

        while (pos < line.length() && Character.isDigit(line.charAt(pos))) {
            pos++;
        }

        int result = 0;
        for (int i = negative ? start + 1 : start; i < pos; i++) {
            result = result * 10 + (line.charAt(i) - '0');
        }
        return negative ? -result : result;
    }

    void nextLine() {
        pos = line.length();
    }
}