#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
const int N = 114514;
#define inl inline __attribute__((always_inline,hot))
namespace ioops {
// #define pc(x) putchar(x)
const int S=1145141;char buf[S];inl char gc(){static char*p1,*p2;return
p1==p2?p2=(p1=buf)+fread(buf,1,S,stdin),(p1==p2?-1:*p1++):*p1++;}
// inl void pc(char c){_ibuf[0]=c;fwrite(_ibuf,1,1,stdout);}
inl string rds(ll s=-1){string r;char c;do c=gc();while(!(c^32&&c^10)&&~c);if(~s){
while(s--&&~c){r+=c;c=gc();}}else while(c^32&&c^10&&~c){r+=c;c=gc();}return r;}
// inl ll rdn(){char C=gc();ll X=0,F=1;while(!isdigit(C)){if(!(C^'-'))F*=-1;
// C=gc();}while(isdigit(C)){X=(X<<1)+(X<<3)+(C^48),C=gc();}return F*X;}
// void put(string s){fwrite(s.c_str(),s.size(),1,stdout);}
};
using namespace ioops;
int main()
{
freopen("text.in", "r", stdin);
// freopen("text.out", "r", stdin);
// int xx = 0;
// string a, b;
// while (++xx <= 999998) {
// a = rds();
// if (a == "#") break;
// b = rds();
// cout << a << ' ' << b << endl;
// }
// cout << "1\n2\n3\n4\n5\n6\n7\n8";
cout << fread(buf,1,S,stdin);
}
class KMP
{
private:
const string _s;
const char* _cs;
size_t _n;
size_t* _nxt;
const bool _prd;
const bool _c;
public:
static const size_t npos = -1;
void initnxt()
{
for (size_t i = 2, j = 0; i <= _n; i++) {
if (_c) {
while (j && _cs[i - 1] != _cs[j]) j = _nxt[j];
if (_cs[i - 1] == _cs[j]) j++;
} else {
while (j && _s[i - 1] != _s[j]) j = _nxt[j];
if (_s[i - 1] == _s[j]) j++;
}
_nxt[i] = j;
}
}
KMP(const string& s)
: _s(s), _cs(), _n(s.size()), _nxt(new size_t[_n + 2]), _prd(0), _c(0)
{ initnxt(); }
KMP(const char* s, size_t n)
: _s(), _cs(s), _n(n), _nxt(new size_t[n + 2]), _prd(0), _c(1)
{ initnxt(); }
KMP(const string& s, size_t* space)
: _s(s), _cs(), _n(s.size()), _nxt(space), _prd(1), _c(0)
{ initnxt(); }
KMP(const char* s, size_t n, size_t* space)
: _s(), _cs(s), _n(n), _nxt(space), _prd(1), _c(1)
{ initnxt(); }
~KMP() { if (!_prd) delete[] _nxt; }
size_t find(const string& s, size_t st=0, size_t end=npos) const
{
if (end == npos) end = s.size() - 1;
for (size_t i = st, j = 0; i <= end; i++) {
if (_c) {
while (j && s[i] != _cs[j]) j = _nxt[j];
if (s[i] == _cs[j]) j++;
} else {
while (j && s[i] != _s[j]) j = _nxt[j];
if (s[i] == _s[j]) j++;
}
if (j == _n) return i;
}
return npos;
}
size_t find(const char* s, size_t st=0, size_t end=npos) const
{
for (size_t i = st, j = 0; i <= end; i++) {
if (end == npos && !s[i]) break;
if (_c) {
while (j && s[i] != _cs[j]) j = _nxt[j];
if (s[i] == _cs[j]) j++;
} else {
while (j && s[i] != _s[j]) j = _nxt[j];
if (s[i] == _s[j]) j++;
}
if (j == _n) return i;
}
return npos;
}
size_t count(const string& s, size_t st=0, size_t end=npos, bool cov=0) const
{
if (end == npos) end = s.size() - 1;
size_t res = 0;
for (size_t i = st, j = 0; i <= end; i++) {
if (_c) {
while (j && s[i] != _cs[j]) j = _nxt[j];
if (s[i] == _cs[j]) j++;
} else {
while (j && s[i] != _s[j]) j = _nxt[j];
if (s[i] == _s[j]) j++;
}
if (j == _n) res++, j = cov ? _nxt[j] : 0;
}
return res;
}
size_t count(const char* s, size_t st=0, size_t end=npos, bool cov=0) const
{
size_t res = 0;
for (size_t i = st, j = 0; i <= end; i++) {
if (end == npos && !s[i]) break;
if (_c) {
while (j && s[i] != _cs[j]) j = _nxt[j];
if (s[i] == _cs[j]) j++;
} else {
while (j && s[i] != _s[j]) j = _nxt[j];
if (s[i] == _s[j]) j++;
}
if (j == _n) res++, j = cov ? _nxt[j] : 0;
}
return res;
}
string delfront(const string& s, size_t st=0,
size_t end=npos, size_t cnt=-1) const
{
if (end == npos) end = s.size() - 1;
string res;
size_t l = 0;
for (size_t i = st, j = 0; i <= end; i++) {
while (j && s[i] != _s[j]) j = _nxt[j];
if (s[i] == _s[j]) j++;
if (j == _n) {
for (size_t k = l; k <= i - j; k++) res += s[k];
l = i + 1;
if (!--cnt) break;
}
}
for (size_t i = l; i <= end; i++) res += s[i];
return res;
}
string delfront(const char* s, size_t st=0,
size_t end=npos, size_t cnt=-1) const
{
string res;
size_t l = 0;
for (size_t i = st, j = 0; i <= end; i++) {
if (end == npos && !s[i]) break;
while (j && s[i] != _s[j]) j = _nxt[j];
if (s[i] == _s[j]) j++;
if (j == _n) {
for (size_t k = l; k <= i - j; k++) res += s[k];
l = i + 1;
if (!--cnt) break;
}
}
for (size_t i = l; i <= end; i++) res += s[i];
return res;
}
string delrept(const string& s, size_t st=0, size_t end=npos,
size_t* sp1=nullptr, size_t* sp2=nullptr) const
{
if (end == npos) end = s.size() - 1;
string res;
size_t cnt = 0;
if (sp1 == nullptr) sp1 = new size_t[s.size() + 2];
if (sp2 == nullptr) sp2 = new size_t[s.size() + 2];
for (size_t i = st, j = 0; i <= end; i++) {
while (j && s[i] != _s[j]) j = _nxt[j];
if (s[i] == _s[j]) j++;
sp1[i] = j, sp2[++cnt] = i;
if (j == _n) cnt -= _n, j = sp1[sp2[cnt]];
}
for (size_t i = 1; i <= cnt; i++) res += s[sp2[i]];
return res;
}
// string delrept(const char* s, size_t st=0, size_t end=npos,
// size_t* sp1=nullptr, size_t* sp2=nullptr) const
// {
// string res;
// size_t cnt = 0;
// if (sp1 == nullptr) sp1 = new size_t[s.size() + 2];
// if (sp2 == nullptr) sp2 = new size_t[s.size() + 2];
// for (size_t i = st, j = 0; i <= end; i++) {
// if (end == npos && !s[i]) break;
// while (j && s[i] != _s[j]) j = _nxt[j];
// if (s[i] == _s[j]) j++;
// sp1[i] = j, sp2[++cnt] = i;
// if (j == _n) cnt -= _n, j = sp1[sp2[cnt]];
// }
// for (size_t i = 1; i <= cnt; i++) res += s[sp2[i]];
// return res;
// }
};
// size_t a[N];
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
const int N = 1145141;
#define inl inline __attribute__((always_inline,hot))
namespace ioops {
#define pc(x) putchar(x)
#define open(x) do(void)!freopen(x".in","r",stdin),(void)!freopen(x".out","w",stdout);while(0)
#define fcio() do{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);}while(0)
#define isnum(t,x) typename enable_if<(!x)^(is_arithmetic<t>::value&&\
!is_same<t,char>::value||is_same<t,ll>::value),bool>::type=true
const int S=1145141;using ll=long long;
char b[S],ob[S];inl void pc(char c){static char*p;
if(p-b==S-1){fwrite(b,1,S,stdout);p=b;}*p++=c;}
inl char gc(){static char*p,*q;if(p==q){p=b;q=b+
fread(b,1,S,stdin);if(p==q)return-1;}return*p++;}
// return p==q?q=(p=b)+fread(b,1,S,stdin),(p==q?-1:*p++):*p++;}
inl string rds(ll s=-1){string r;char c;do c=gc();while(!(c^32&&c^10)&&c!=-1);if(s!=-1){
while(s--&&c!=-1){r+=c;c=gc();}}else while(c^32&&c^10&&c^-1){r+=c;c=gc();}return r;}
ll rdn(){char C=gc();ll X=0,F=1;while(!isdigit(C)){if(!(C^'-'))F*=-1;
C=gc();}while(isdigit(C)){X=(X<<1)+(X<<3)+(C^48),C=gc();}return F*X;}
template<class T,isnum(T,1)>void put(T x){if(x<0){pc('-');x=-x;};if(x>9)put(x/10);pc(x%10^48);}
template<class T,isnum(T,0)>void put(T x){cout<<x;}template<class T>void pt(T x){put(x);pc('\n');}
void rd(){}template<class T,isnum(T,1),class...A>void rd(T&x,A&...a){x=rdn();rd(a...);}
template<class T,isnum(T,0),class...A>void rd(T&x,A&...a){cin>>x;rd(a...);}
void pt(){pc('\n');}template<class T,class...A>void pt(T x,A...a){put(x);pc(' ');pt(a...);}
};
using namespace ioops;
string s[N];
int main()
{
//// fcio();
// freopen("test.in", "r", stdin);
// for (int i = 1; i <= 1000000; i++) {
//// cin >> s[i];
// s[i] = rds();
// }
// cout << s[1000000];
put(rdn());
}