using System;
using System.Numerics;
using System.Linq;
using System.Collections.Generic;
using System.Text;
namespace Atcoder20200419
{
class ProgramA
{
static void Main(string args)
{
//入力
string a = Console.ReadLine().Split(' ');
long s = long.Parse(a[0]);
long l = long.Parse(a[1]);
//羊が多いとき(s > l)のときは生き残る、それ以外は死ぬ
if (s > l)
Console.WriteLine("safe");
else
Console.WriteLine("unsafe");
}
}
class ProgramB
{
static void Main(string args)
{
//入力
string s = Console.ReadLine().Split(' ');
long a = long.Parse(s[0]);
long b = long.Parse(s[1]);
long c = long.Parse(s[2]);
long d = long.Parse(s[3]);
//両方まだ体力があれば続行
while(a >= 1 && c >= 1)
{
//高橋君の攻撃
c -= b;
//ここで体力がなくなればおしまい
if (c < 1)
break;
//青木君の攻撃
a -= d;
}
//高橋君モンスターの体力があればYes、それ以外はNo
if (a > 0)
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
class ProgramC
{
static void Main(string args)
{
//入力
int n = int.Parse(Console.ReadLine());
string input = new string[n];
for (int i = 0; i < n; i++)
input[i] = Console.ReadLine();
//ソートする
Array.Sort(input);
long count = 1;//最初はとりあえずあることを含む
//もし前の文字列と違えば、数える
for(int i = 1;i < n;i++)
{
if (input[i] != input[i - 1])
count++;
}
//出力
Console.WriteLine(count);
}
}
class ProgramD
{
static void Main(string args)
{
//入力
string s = Console.ReadLine();
long ans = 0;
long temp = 0;
int sum = new int[2019];
//余りが0という状態は無条件に1つ加えられる。
sum[0]++;
//左からi桁のときのmodを入れる
for (int i = s.Length - 1;i >= 0; i--)
{
temp += (s[i] - '0') * modpow(10, s.Length - 1 - i, 2019);
temp %= 2019;
sum[temp]++;
}
//余りの個数に応じて計算する
for (int i = 0; i < 2019; i++)
ans += sum[i] * (sum[i] - 1) / 2;
//答え出力
Console.WriteLine(ans);
}
//繰り返し二乗法で求める
static long modpow(long a, long n, long MOD)
{
if (n == 0)
return 1;
if (n % 2 == 0)
{
long temp = modpow(a, n / 2, MOD);
return temp * temp % MOD;
}
return a * modpow(a, n - 1, MOD) % MOD;
}
}
}