#include <bits/stdc++.h>
using namespace std;
void Get_Define() {
  while (getchar() != '#')
    ;
  while (getchar() != 'd')
    ;
  while (getchar() != 'e')
    ;
  while (getchar() != 'f')
    ;
  while (getchar() != 'i')
    ;
  while (getchar() != 'n')
    ;
  while (getchar() != 'e')
    ;
}
string Get() {
  string S = "";
  char c;
  while (c = getchar(), c != 10)
    if (c != ' ') S += c;
  return S;
}
int N;
string Name[100], Exp[101];
bool V_OK[101], F_OK[101];
bool V_Bad[101], F_Bad[101];
bool V_Split[101], F_Split[101];
bool OP(char c) { return c == '+' || c == '-' || c == '*' || c == '/'; }
bool Check(char c) { return OP(c) || c == '(' || c == ')'; }
int Find(string T) {
  for (int i = 0; i < N; i++)
    if (T == Name[i]) return i;
  return -1;
}
bool Bad(int Number) {
  if (Number == -1) return false;
  if (V_Bad[Number]) return F_Bad[Number];
  string S = Exp[Number];
  bool Ans = false;
  for (int Depth = 0, i = 0; !Ans && i < S.size(); i++)
    if (S[i] == '(')
      Depth++;
    else if (S[i] == ')')
      Depth--;
    else if (!Depth && (S[i] == '+' || S[i] == '-'))
      Ans = true;
  V_Bad[Number] = true;
  return F_Bad[Number] = Ans;
}
bool Split(int Number) {
  if (Number == -1) return false;
  if (V_Split[Number]) return F_Split[Number];
  string S = Exp[Number];
  bool Ans = false;
  for (int Depth = 0, i = 0; !Ans && i < S.size(); i++)
    if (S[i] == '(')
      Depth++;
    else if (S[i] == ')')
      Depth--;
    else if (!Depth && OP(S[i]))
      Ans = true;
  V_Split[Number] = true;
  return F_Split[Number] = Ans;
}
bool OK(int Number) {
  if (V_OK[Number]) return F_OK[Number];
  string S = Exp[Number];
  int A[100];
  bool Flag[100];
  int M = 0;
  bool Ans = true;
  for (int i = 0; i < S.size();)
    if (Check(S[i])) {
      A[M] = S[i++];
      Flag[M++] = false;
    } else {
      string T = "";
      while (i < S.size() && !Check(S[i])) T += S[i++];
      A[M] = Find(T);
      Flag[M++] = true;
    }
  for (int i = 0; Ans && i < M; i++)
    if (Flag[i] && A[i] != -1 && !OK(A[i])) Ans = false;
  for (int i = 0; Ans && i < M; i++)
    if (!Flag[i] && OP(A[i]))
      if (A[i] == '-') {
        if (Flag[i + 1] && Bad(A[i + 1])) Ans = false;
      } else if (A[i] == '*') {
        if (Flag[i - 1] && Bad(A[i - 1])) Ans = false;
        if (Flag[i + 1] && Bad(A[i + 1])) Ans = false;
      } else if (A[i] == '/') {
        if (Flag[i - 1] && Bad(A[i - 1])) Ans = false;
        if (Flag[i + 1] && Split(A[i + 1])) Ans = false;
      }
  V_OK[Number] = true;
  return F_OK[Number] = Ans;
}
int main() {
  scanf("%d", &N);
  getchar();
  for (int i = 0; i < N; i++) {
    Get_Define();
    cin >> Name[i];
    Exp[i] = Get();
  }
  Exp[N] = Get();
  printf(OK(N) ? "OK\n" : "Suspicious\n");
  return 0;
}
