#include <bits/stdc++.h>

#define fast ios_base::sync_with_stdio(false); cin.tie(NULL);
#define loop(i,n) for(int i = 0; i < n; ++ i)
#define mod 10e+7
#define pb push_back
const long double PI = 3.141592653589793236L;

typedef long long int ll;
typedef long double ld;

using namespace std;

long gcd(long a, long b) 
{ 
    if (b == 0) 
        return a; 
    return gcd(b, a % b);  
      
} 

int max(int x,int y)
{
    if(x==0 && y==0)
        return -1;
    else if(x>y)
        return x;
    else if(x<=y)
        return y;
    return 0;
}

int min(int x,int y)
{
    if(x==0 && y==0)
        return -1;
    else if(x>y)
        return y;
    else if(x<=y)
        return x;
    return 0;
}


void solve()
{
  int n,f=0;
  cin>>n;
  string str;
  unordered_set<string> S;
  while(n--)
  {
    cin>>str;
    S.insert(str);
  }
  unordered_set<string>::iterator itr;
  for(itr=S.begin();itr!=S.end();++itr)
  //for(const string& str1 : S) 
  {
    if(S.count('!'+*itr))
    {
      cout<<*itr;
      return;
    }
  }
  cout<<"satisfiable";
}


int main()
{
    int T = 1;
    //cin >> T;
    
    while (T--)
        solve();
        
    return 0;
}
#include <bits/stdc++.h>
using namespace std;

void input(set<string>& rseStr)
{
  int nStrSiz;
  cin >> nStrSiz;

  for (int nx = 0; nx < nStrSiz; ++nx)
  {
    string sStr;
    cin >> sStr;
    rseStr.insert(sStr);
  }
}

string isExistStr(const set<string>& cnrseStr)
{
  for (auto sStr : cnrseStr)
  {
    if (sStr[0] == '!')
    {
      string s2ndSubStr = sStr.substr(1);
      if ( cnrseStr.count(s2ndSubStr) )
        return s2ndSubStr;
    }
  }
  return "satisfiable";
}
  
int main()
{
  set<string> seStr;
  input(seStr);
  cout << isExistStr(seStr) << endl;

  return 0;
}