#include using namespace std; using ll = long long; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define reps(i, n) for (ll i = 1; i <= (ll)(n); i++) #define all(a) (a).begin(), (a).end() #define uniq(a) (a).erase(unique(all(a)), (a).end()) #define bit(n) (1LL << (n)) #define dump(a) cerr << #a " = " << (a) << endl using vll = vector; using pll = pair; template using priority_queue_rev = priority_queue, greater>; constexpr double PI = 3.1415926535897932384626433832795028; constexpr ll DY[9] = {0, 1, 0, -1, 1, 1, -1, -1, 0}; constexpr ll DX[9] = {1, 0, -1, 0, 1, -1, -1, 1, 0}; ll sign(ll a) { return (a > 0) - (a < 0); } ll cdiv(ll a, ll b) { return (a - 1 + b) / b; } template T sq(T a) { return a * a; } template bool chmax(T &a, const U &b) { if (a < b) { a = b; return true; } return false; } template bool chmin(T &a, const U &b) { if (b < a) { a = b; return true; } return false; } template ostream &operator<<(ostream &os, const pair &a) { os << "(" << a.first << ", " << a.second << ")"; return os; } template ostream &operator<<(ostream &os, const tuple &a) { auto [t, u, v] = a; os << "(" << t << ", " << u << ", " << v << ")"; return os; } template ostream &operator<<(ostream &os, const vector &a) { os << "("; for (auto itr = a.begin(); itr != a.end(); itr++) { os << *itr << (next(itr) != a.end() ? ", " : ""); } os << ")"; return os; } template ostream &operator<<(ostream &os, const deque &a) { os << "("; for (auto itr = a.begin(); itr != a.end(); itr++) { os << *itr << (next(itr) != a.end() ? ", " : ""); } os << ")"; return os; } template ostream &operator<<(ostream &os, const set &a) { os << "{"; for (auto itr = a.begin(); itr != a.end(); itr++) { os << *itr << (next(itr) != a.end() ? ", " : ""); } os << "}"; return os; } template ostream &operator<<(ostream &os, const multiset &a) { os << "{"; for (auto itr = a.begin(); itr != a.end(); itr++) { os << *itr << (next(itr) != a.end() ? ", " : ""); } os << "}"; return os; } template ostream &operator<<(ostream &os, const map &a) { os << "{"; for (auto itr = a.begin(); itr != a.end(); itr++) { os << *itr << (next(itr) != a.end() ? ", " : ""); } os << "}"; return os; } struct setup { static constexpr ll PREC = 20; setup() { cout << fixed << setprecision(PREC); cerr << fixed << setprecision(PREC); }; } setup; int main() { ll n; cin >> n; cout << n % 1000000007 << endl; }