Problem: A TV show called "Guess a number!" is gathering popularity. The whole Berland, the old and the young, are watching the show.

The rules are simple. The host thinks of an integer y and the participants guess it by asking questions to the host. There are four types of acceptable questions:

  * Is it true that y is strictly larger than number x? 
  * Is it true that y is strictly smaller than number x? 
  * Is it true that y is larger than or equal to number x? 
  * Is it true that y is smaller than or equal to number x? 



On each question the host answers truthfully, "yes" or "no".

Given the sequence of questions and answers, find any integer value of y that meets the criteria of all answers. If there isn't such value, print "Impossible".

Input

The first line of the input contains a single integer n (1 ≤ n ≤ 10000) — the number of questions (and answers). Next n lines each contain one question and one answer to it. The format of each line is like that: "sign x answer", where the sign is:

  * ">" (for the first type queries), 
  * "<" (for the second type queries), 
  * ">=" (for the third type queries), 
  * "<=" (for the fourth type queries). 



All values of x are integer and meet the inequation  - 109 ≤ x ≤ 109. The answer is an English letter "Y" (for "yes") or "N" (for "no").

Consequtive elements in lines are separated by a single space.

Output

Print any of such integers y, that the answers to all the queries are correct. The printed number y must meet the inequation  - 2·109 ≤ y ≤ 2·109. If there are many answers, print any of them. If such value doesn't exist, print word "Impossible" (without the quotes).

Examples

Input

4
&gt;= 1 Y
&lt; 3 N
&lt;= -3 N
&gt; 55 N


Output

17


Input

2
&gt; 100 Y
&lt; -100 Y


Output

Impossible

Solution (in JAVA):

Solution:
/**
 * User: smilitude
 * Date: 4/21/14
 * Time: 7:27 PM
 */

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.math.BigInteger;
import java.util.*;

public class A {
  InputReader in;
  PrintWriter out;

  void solve() {
    int n = in.readInt();
    int l = -2000000000;
    int r = +2000000000;
    for (int i = 0; i < n; i++) {
      String sign = in.readString();
      int number = in.readInt();
      String verdict = in.readString();

      if (sign.equals(">=")) {
        if (verdict.equals("Y")) {
          l = Math.max(l, number);
        } else {
          r = Math.min(r, number-1);
        }
      }
      if (sign.equals(">")) {
        if (verdict.equals("Y")) {
          l = Math.max(l, number+1);
        } else {
          r = Math.min(r, number);
        }
      }
      if (sign.equals("<=")) {
        if (verdict.equals("Y")) {
          r = Math.min(r, number);
        } else {
          l = Math.max(l, number+1);
        }
      }
      if (sign.equals("<")) {
        if (verdict.equals("Y")) {
          r = Math.min(r, number-1);
        } else {
          l = Math.max(l, number);
        }
      }
//      out.println("After step " + i + " " + l + " and " + r);
    }
    if (l > r) {
      out.println("Impossible");
    } else {
      out.println(r);
    }
  }

  public static void main(String[] args) {
    new A().run();
  }

  A() {
    String id = getClass().getName().toLowerCase();
    try {
//            System.setIn(new FileInputStream(id + ".in"));
//            System.setOut(new PrintStream(new FileOutputStream(id + ".out")));
//            System.setIn(new FileInputStream("input.txt"));
//            System.setOut(new PrintStream(new FileOutputStream("output.txt")));
    } catch (Exception e) {
      throw new RuntimeException(e);
    }
    in = new InputReader(System.in);
    out = new PrintWriter(System.out);
  }

  void run() {
    solve();
    exit();
  }

  void exit() {
    out.close();
    System.exit(0);
  }

  static class InputReader {
    InputStream stream;
    byte[] buf = new byte[1024];
    int curChar, numChars;

    InputReader(InputStream stream) {
      this.stream = stream;
    }

    int read() {
      if (numChars == -1)
        throw new InputMismatchException();
      if (curChar >= numChars) {
        curChar = 0;
        try {
          numChars = stream.read(buf);
        } catch (IOException e) {
          throw new InputMismatchException();
        }
        if (numChars <= 0)
          return -1;
      }
      return buf[curChar++];
    }

    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;
    }

    long readLong() {
      int c = read();
      while (isSpaceChar(c))
        c = read();
      int sgn = 1;
      if (c == '-') {
        sgn = -1;
        c = read();
      }
      long res = 0;
      do {
        if (c < '0' || c > '9')
          throw new InputMismatchException();
        res *= 10;
        res += c - '0';
        c = read();
      } while (!isSpaceChar(c));
      return res * sgn;
    }

    String readString() {
      int c = read();
      while (isSpaceChar(c))
        c = read();
      StringBuffer res = new StringBuffer();
      do {
        res.appendCodePoint(c);
        c = read();
      } while (!isSpaceChar(c));
      return res.toString();
    }

    boolean isSpaceChar(int c) {
      return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
    }

    String readLine0() {
      StringBuffer buf = new StringBuffer();
      int c = read();
      while (c != '\n' && c != -1) {
        if (c != '\r')
          buf.appendCodePoint(c);
        c = read();
      }
      return buf.toString();
    }

    String readLine() {
      String s = readLine0();
      while (s.trim().length() == 0)
        s = readLine0();
      return s;
    }

    String readLine(boolean ignoreEmptyLines) {
      if (ignoreEmptyLines)
        return readLine();
      else
        return readLine0();
    }

    BigInteger readBigInteger() {
      try {
        return new BigInteger(readString());
      } catch (NumberFormatException e) {
        throw new InputMismatchException();
      }
    }

    char readCharacter() {
      int c = read();
      while (isSpaceChar(c))
        c = read();
      return (char) c;
    }

    double readDouble() {
      int c = read();
      while (isSpaceChar(c))
        c = read();
      int sgn = 1;
      if (c == '-') {
        sgn = -1;
        c = read();
      }
      double res = 0;
      while (!isSpaceChar(c) && c != '.') {
        if (c == 'e' || c == 'E')
          return res * Math.pow(10, readInt());
        if (c < '0' || c > '9')
          throw new InputMismatchException();
        res *= 10;
        res += c - '0';
        c = read();
      }
      if (c == '.') {
        c = read();
        double m = 1;
        while (!isSpaceChar(c)) {
          if (c == 'e' || c == 'E')
            return res * Math.pow(10, readInt());
          if (c < '0' || c > '9')
            throw new InputMismatchException();
          m /= 10;
          res += (c - '0') * m;
          c = read();
        }
      }
      return res * sgn;
    }
  }
}