#ifdef LOCAL #include "LOCAL.hpp" #else #define RUN() solve() #define dbg(x) #define say(x) #endif #include #include using namespace std; using namespace atcoder; using ll = long long; using ld = long double; template using v = vector; using vll = vector; using vvll = vector>; #define mp(x, y) make_pair(x, y) #define re(i, n) for (int i = 0; i < (int)(n); i++) #define rep(i, x, n) for (int i = (int)(x); i < (int)(n); i++) #define rep_s(i, x, n) for (int i = (int)(x); i <= (int)(n); i++) #define rep_r(i, end, sta) for (int i = (int)((n) - 1); i >= (int)(end); i--) #define rbfl(elm, ctr) for (auto &elm : ctr) #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define lf "\n" #define ifel(flag, T, F) ((flag) ? (T) : (F)) #define YES cout << "Yes\n" #define NO cout << "No\n" #define YN(flag) cout << ((flag) ? "Yes" : "No") << lf const ll LLMAX = 9223372036854775807LL; const ld eps = 1e-9; void INITIALIZE() // 入出力設定 { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(15) << boolalpha; } void pass() { return; }; // ブレークポイント設定用 void solve(); // main関数の代替 #define pos_mod(a, b) ((a % b + b) % b) template bool chmax(T1 &a, const T2 b) { return (a < b ? (a = b, true) : false); } template bool chmin(T1 &a, const T2 b) { return (a > b ? (a = b, true) : false); } bool fequal(ld a, ld b) { return (fabs((a) - (b)) < eps); } // 入力 template istream &operator>>(istream &is, vector &v) { for (T &in : v) is >> in; return is; } template istream &operator>>(istream &is, pair &p) { is >> p.first >> p.second; return is; } // 出力 template ostream &operator<<(ostream &os, const vector &v) { for (int i = 0, n = v.size(); i < n; i++) os << v[i] << (i + 1 != n ? " " : ""); return os; } template ostream &operator<<(ostream &os, const pair &p) { os << p.first << " " << p.second << endl; return os; } template ostream &operator<<(ostream &os, const map &mp) { for (auto &[key, val] : mp) os << key << " " << val << endl; cout << endl; return os; } template ostream &operator<<(ostream &os, const set &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++, itr++) os << *itr << (i + 1 != (int)st.size() ? " " : ""); return os; } template ostream &operator<<(ostream &os, multiset st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++, itr++) os << *itr << (i + 1 != (int)st.size() ? " " : ""); return os; } template ostream &operator<<(ostream &os, deque dq) { auto itr = dq.begin(); for (int i = 0, n = dq.size(); i < n; i++, itr++) os << *itr << (i + 1 != n ? " " : ""); return os; } template ostream &operator<<(ostream &os, priority_queue pq) { while (pq.size()) { os << pq.top() << " "; pq.pop(); } return os; } int main() { INITIALIZE(); RUN(); return 0; } // ============================================== void solve() { ll n; cin >> n; cout << (ll)sqrtl(n) << lf; }