#include <bits/stdc++.h>
using namespace std;
struct node {
  bool flag;
  vector<int> op;
};
map<string, node> def;
map<char, int> op;
void del_space(string tmp) {
  int x = tmp.find_first_not_of(" ");
  tmp.erase(0, x);
  x = tmp.find_last_not_of(" ");
  tmp.erase(x + 1, tmp.length());
  string s = "";
  for (int i = 0; i < tmp.length(); i++) {
    if (tmp[i] != ' ') {
      s += tmp[i];
    } else {
      if (tmp[i + 1] != ' ') s += tmp[i];
    }
  }
  x = s.find("define") + 7;
  int y = x;
  while (s[y] != ' ') y++;
  string s1, s2;
  s1.append(s.begin() + x, s.begin() + y);
  for (int i = y + 1; i < s.length(); i++) {
    if (s[i] != ' ') s2 += s[i];
  }
  node tmp_node;
  tmp_node.flag = 0;
  int cnt = 0;
  for (int i = 0; i < s2.length(); i++) {
    if (s2[i] == '(') cnt++;
    if (s2[i] == ')') cnt--;
    if (op[s2[i]] && cnt == 0) {
      tmp_node.op.push_back(op[s2[i]]);
    }
  }
  for (int i = 0; i < s2.length(); i++) {
    if (s2[i] == '*' || s2[i] == '/') {
      string ss1, ss2;
      bool bracket = 0;
      if (s2[i + 1] == '(') bracket = 1;
      for (int j = i + 1; s2[j] != ')' && !op[s2[j]] && j < s2.length(); j++) {
        ss1 += s2[j];
      }
      map<string, node>::iterator it = def.find(ss1);
      if (it != def.end()) {
        if (def[ss1].flag == 1) {
          tmp_node.flag = 1;
        }
        if (bracket == 0) {
          for (int k = 0; k < def[ss1].op.size(); k++) {
            if (def[ss1].op[k] == 1 || def[ss1].op[k] == 2) {
              tmp_node.flag = 1;
            }
          }
        }
      }
      bracket = 0;
      if (s2[i - 1] == ')') bracket = 1;
      for (int j = i - 1; s2[j] != '(' && !op[s2[j]] && j >= 0; j--) {
        ss2 += s2[j];
      }
      reverse(ss2.begin(), ss2.end());
      it = def.find(ss2);
      if (it != def.end()) {
        if (def[ss2].flag == 1) {
          tmp_node.flag = 1;
        }
        if (bracket == 0) {
          for (int k = 0; k < def[ss2].op.size(); k++) {
            if (def[ss2].op[k] == 1 || def[ss2].op[k] == 2) {
              tmp_node.flag = 1;
            }
          }
        }
      }
    }
    if (s2[i] == '-') {
      string ss1;
      bool bracket = 0;
      if (s2[i + 1] == '(') bracket = 1;
      for (int j = i + 1; s2[j] != ')' && !op[s2[j]] && j < s2.length(); j++) {
        ss1 += s2[j];
      }
      map<string, node>::iterator it = def.find(ss1);
      if (it != def.end()) {
        if (def[ss1].flag == 1) {
          tmp_node.flag = 1;
        }
        if (bracket == 0) {
          for (int k = 0; k < def[ss1].op.size(); k++) {
            if (def[ss1].op[k] == 1 || def[ss1].op[k] == 2) {
              tmp_node.flag = 1;
            }
          }
        }
      }
    }
    if (s2[i] == '/') {
      string ss1;
      bool bracket = 0;
      if (s2[i + 1] == '(') bracket = 1;
      for (int j = i + 1; s2[j] != ')' && !op[s2[j]] && j < s2.length(); j++) {
        ss1 += s2[j];
      }
      map<string, node>::iterator it = def.find(ss1);
      if (it != def.end()) {
        if (def[ss1].flag == 1 || (bracket == 0 && !def[ss1].op.empty())) {
          tmp_node.flag = 1;
        }
      }
    }
  }
  def[s1] = tmp_node;
}
int main() {
  op['+'] = 1;
  op['-'] = 2;
  op['*'] = 3;
  op['/'] = 4;
  int n, flag = 1;
  cin >> n;
  getchar();
  while (n--) {
    string tmp;
    getline(cin, tmp);
    del_space(tmp);
  }
  string tmp, exp;
  getline(cin, tmp);
  int x = tmp.find_first_not_of(" ");
  tmp.erase(0, x);
  x = tmp.find_last_not_of(" ");
  tmp.erase(x + 1, tmp.length());
  for (int i = 0; i < tmp.length(); i++) {
    if (tmp[i] != ' ') {
      exp += tmp[i];
    }
  }
  for (map<string, node>::iterator it = def.begin(); it != def.end(); ++it) {
    if (exp.find(it->first) != string::npos && it->second.flag == 1) {
      cout << "Suspicious" << endl;
      return 0;
    }
  }
  for (int i = 0; i < exp.length(); i++) {
    if (exp[i] == '*' || exp[i] == '/') {
      string s1, s2;
      bool bracket = 0;
      if (exp[i + 1] == '(') bracket = 1;
      for (int j = i + 1; exp[j] != ')' && !op[exp[j]] && j < exp.length();
           j++) {
        s1 += exp[j];
      }
      map<string, node>::iterator it = def.find(s1);
      if (it != def.end()) {
        if (def[s1].flag == 1) {
          cout << "Suspicious" << endl;
          return 0;
        }
        if (bracket == 0) {
          for (int k = 0; k < def[s1].op.size(); k++) {
            if (def[s1].op[k] == 1 || def[s1].op[k] == 2) {
              cout << "Suspicious" << endl;
              return 0;
            }
          }
        }
      }
      bracket = 0;
      if (exp[i - 1] == ')') bracket = 1;
      for (int j = i - 1; exp[j] != '(' && !op[exp[j]] && j >= 0; j--) {
        s2 += exp[j];
      }
      reverse(s2.begin(), s2.end());
      it = def.find(s2);
      if (it != def.end()) {
        if (def[s2].flag == 1) {
          cout << "Suspicious" << endl;
          return 0;
        }
        if (bracket == 0) {
          for (int k = 0; k < def[s2].op.size(); k++) {
            if (def[s2].op[k] == 1 || def[s2].op[k] == 2) {
              cout << "Suspicious" << endl;
              return 0;
            }
          }
        }
      }
    }
    if (exp[i] == '-') {
      string s1;
      bool bracket = 0;
      if (exp[i + 1] == '(') bracket = 1;
      for (int j = i + 1; exp[j] != ')' && !op[exp[j]] && j < exp.length();
           j++) {
        s1 += exp[j];
      }
      map<string, node>::iterator it = def.find(s1);
      if (it != def.end()) {
        if (def[s1].flag == 1) {
          cout << "Suspicious" << endl;
          return 0;
        }
        if (bracket == 0) {
          for (int k = 0; k < def[s1].op.size(); k++) {
            if (def[s1].op[k] == 1 || def[s1].op[k] == 2) {
              cout << "Suspicious" << endl;
              return 0;
            }
          }
        }
      }
    }
    if (exp[i] == '/') {
      string s1;
      bool bracket = 0;
      if (exp[i + 1] == '(') bracket = 1;
      for (int j = i + 1; exp[j] != ')' && !op[exp[j]] && j < exp.length();
           j++) {
        s1 += exp[j];
      }
      map<string, node>::iterator it = def.find(s1);
      if (it != def.end()) {
        if (def[s1].flag == 1 || (bracket == 0 && !def[s1].op.empty())) {
          cout << "Suspicious" << endl;
          return 0;
        }
      }
    }
  }
  cout << "OK" << endl;
  return 0;
}
