#include <bits/stdc++.h>

using namespace std;

#define TRACE(x) x
#define WATCH(x) TRACE( cout << #x" = " << x << endl)
#define PRINT(x) TRACE(printf(x))
#define WATCHR(a, b) TRACE( for(auto c = a; c != b;) cout << *(c++) << " "; cout << endl;)
#define WATCHC(V) TRACE({cout << #V" = "; WATCHR(V.begin(), V.end()); } )
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sz(x) (int)(x).size()
#define rsz resize
#define mp make_pair
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define eb emplace_back
#define ft front
#define bk back

#define rep(i,a,b) for(int i = (a); i < (b); ++i)
#define per(i,a,b) for(int i = (a); i > (b); --i)
#define trav(a,x) for(auto& a : x)
#define travc(a,x) for(const auto& a : x)

using ll = long long;
using ld = long double;
using db = double;
using str = string;

using pi = pair<int, int>;
using pl = pair<ll, ll>;
using pd = pair<db, db>;

using vi = vector<int>;
using vl = vector<ll>;
using vd = vector<db>;
using vs = vector<str>;
using vpi = vector<pi>;
using vpl = vector<pl>;
using vpd = vector<pd>;

// INPUT
template<class A> void re(complex<A>& c);
template<class A, class B> void re(pair<A, B>& p);
template<class A> void re(vector<A>& v);
template<class A, size_t SZ> void re(array<A, SZ>& a);

template<class T> void re(T& x) { cin >> x;}
void re(db& d) { str t; re(t); d = stod(t);}
void re(ld& d) { str t; re(t); d = stold(t);}
template<class H, class ... T> void re(H& h, T&... t) { re(h); re(t...);}

template<class A> void re(complex<A>& c) { A a, b; re(a, b); c = {a,b};}
template<class A, class B> void re(pair<A, B>& p) { re(p.f, p.s); }
template<class A> void re(vector<A>& x) { trav(a, x) re(a);}
template<class A, size_t SZ> void re(array<A, SZ>& x) { trav(a, x) re(a);}

#define ts to_string
template<class A, class B> str ts(pair<A, B> p);
template<class A> str ts(complex<A> c) { return ts(mp(c.real(), c.imag()));}
str ts(bool b) { return b ? "true" : "false"; }
str ts(char c) { str s = ""; s += c; return s; }
str ts(str s) { return s; }
str ts(const char* s) { return (str)s; }
str ts(vector<bool> v) {
    bool fst = 1; str res = "{";
    rep(i, 0, sz(v)) {
        if (!fst) res += ", ";
        fst = 0; res += ts(v[i]);
    }
    res += "}"; return res;
}
template<size_t SZ> str ts(bitset<SZ> b) {
    str res = ""; rep(i, 0, SZ) res += char('0' + b[i]);
    return res;
}
template<class T> str ts(T v) {
    bool fst = 1; str res = "{";
    travc(a, v) {
        if(!fst) res += ", ";
        fst = 0; res += ts(a);
    }
    res += "}"; return res;
}
template<class A, class B> str ts(pair<A, B> p) { return "(" + ts(p.f) + ", " + ts(p.s) + ")"; }
// OUTPUT
template<class A> void pr(A x) { cout << ts(x); }
template<class H, class... T> void pr(const H& h, const T&... t) { 
	pr(h); pr(t...); }
void ps() { pr("\n"); } // print w/ spaces
template<class H, class... T> void ps(const H& h, const T&... t) { 
	pr(h); if (sizeof...(t)) pr(" "); ps(t...); }
 
// FILE I/O
void setIn(string s) { freopen(s.c_str(),"r",stdin); }
void setOut(string s) { freopen(s.c_str(),"w",stdout); }
void unsyncIO() { ios_base::sync_with_stdio(0); cin.tie(0); }
void setIO(string s = "") {
	unsyncIO();
	// cin.exceptions(cin.failbit); 
	// throws exception when do smth illegal
	// ex. try to read letter into int
	if (sz(s)) { setIn(s+".in"), setOut(s+".out"); } // for USACO
}
 
mt19937 rng((uint32_t)chrono::steady_clock::now().time_since_epoch().count()); 

constexpr ll MOD = 998'244'353;

inline ll pow_mod(ll a, ll b, ll mod = MOD) {
    ll result = 1ll, mult = (a % mod);
    b %= mod;
    while(b) {
        if(b & 1) result = (result * mult) % mod;
        mult = (mult * mult) % mod;
        b /= 2ll;
    }
    return result;
}

inline ll inv_mod(ll a, ll mod = MOD) { return pow_mod(a, mod - 2); }

// End of template code
int main()
{
    setIO();
    int s, w;
    cin >> s >> w;
    if(w >= s) cout << "unsafe\n";
    else cout << "safe\n";
}



Measured memory_bytes: 3664