#include using namespace std; #define rep(E, F) for (E = 0; E < (F); E++) #define per(E, F) for (E = (F) - 1; E >= 0; E--) typedef vector vi; int get_int() { int r = 0, c = getchar(), s = 1; while (c != '-' && c < '0' || c > '9') c = getchar(); while (c == '-') s *= -1, c = getchar(); while (c >= '0' && c <= '9') r = r*10 + c - '0', c = getchar(); return s*r; } int get_string(char* b, char t) { int i = 0; b[i++] = getchar(); while (b[i - 1] != t) b[i++] = getchar(); b[i - 1] = '\0'; return i - 1; } int goo(int l, int a, int r) { fprintf(stderr, ">> %d %d %d\n", l, a, r); if (l != 0 && r != 0) return 1; if (a > 1) return 1; if (a == 1 && (l != 0 || r != 0)) return 1; return 0; } int foo(int l, int a, int r) { if (!goo(l, a, r)) return a + l + r; if (a == 0) return max(l, r); return max(max(l, r), 1); } int main() { int n = get_int(), x, r = 0, b = 0; map m; char c, s[32]; while (n--) { get_string(s, ' '); c = getchar(); x = get_int(); if (m.find(s) == m.end()) m[s] = vi(3); if (c == 'l') m[s][0] += x; else if (c == 'a') m[s][1] += x; else if (c == 'r') m[s][2] += x; else assert(0); } for (auto it : m) if (goo(it.second[0], it.second[1], it.second[2])) { b = 1; break; } if (!b) { printf("impossible\n"); return 0; } for (auto it : m) r += foo(it.second[0], it.second[1], it.second[2]); printf("%d\n", r + 1); return 0; }