#define _CRT_SECURE_NO_WARNINGS #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #ifdef ONLINE_JUDGE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long int64_t; typedef unsigned long long uint64_t; #else #include #endif using namespace std; #define CRP(t, x) const t &x #define OPX(op, t, x) operator op(CRP(t, x)) #define OPL(t, x) bool OPX(<, t, x) const #define FIL(x, v) memset(x, v, sizeof(x)) #define CLR(x) FIL(x, 0) #define NE1(x) FIL(x, -1) #define INF(x) FIL(x, 0x3f) #ifndef _DEBUG #define _DEBUG 0 #endif // !_DEBUG #define IFD if (_DEBUG) typedef int64_t ll, i64; typedef uint64_t ull, u64; inline char getchar(int) { static char buf[64 << 20], *S = buf, *T = buf; if (S == T) T = fread(S = buf, 1, 64 << 20, stdin) + buf; return S == T ? EOF : *S++; } template inline bool read(T &x) { int ch = x = 0, f = 1; while (!isdigit(ch = getchar())) if (ch == EOF) return false; else if (ch == '-') f = 0; for (; isdigit(ch); ch = getchar()) x = x * 10 + ch - '0'; return x = f ? x : -x, true; } template inline bool read(T1 &v1, T2 &v2) { return read(v1) && read(v2); } template inline bool read(T1 &v1, T2 &v2, T3 &v3) { return read(v1) && read(v2) && read(v3); } template inline bool read(T1 &v1, T2 &v2, T3 &v3, T4 &v4) { return read(v1) && read(v2) && read(v3) && read(v4); } template inline bool read(T1 &v1, T2 &v2, T3 &v3, T4 &v4, T5 &v5) { return read(v1) && read(v2) && read(v3) && read(v4) && read(v5); } inline ll gcd(ll a, ll b) { for (; b; swap(a, b)) a %= b; return a; } inline ll fpow(ll a, ll b, ll m) { ll r = 1; for (; b; b >>= 1, a = a * a % m) if (b & 1) r = r * a % m; return r; } const double eps = 1e-8; inline int sgn(double x) { return x > eps ? 1 : x < -eps ? -1 : 0; } char str[205]; int stk[205], top; int main() { while (scanf("%s", str), *str - '0') { int len = strlen(str); bool flag = true; for (int st = 0; st < 32 && flag; st++) { top = 0; for (int i = len - 1; i >= 0; i--) if (islower(str[i])) stk[top++] = st >> (str[i] - 'p') & 1; else switch (str[i]) { case 'K': top--; stk[top - 1] = stk[top] && stk[top - 1]; break; case 'A': top--; stk[top - 1] = stk[top] || stk[top - 1]; break; case 'C': top--; stk[top - 1] = !stk[top - 1] || stk[top]; break; case 'E': top--; stk[top - 1] = stk[top] == stk[top - 1]; break; case 'N': stk[top - 1] = !stk[top - 1]; break; } if (top != 1 || *stk == 0) flag = false; } puts(flag ? "tautology" : "not"); } return 0; }