{-# LANGUAGE FlexibleContexts, OverloadedStrings #-}
import Control.Applicative
import Control.Monad
import qualified Data.ByteString.Char8 as B
import Data.Maybe (fromJust)
import Text.Printf
import Debug.Trace

bisearch p l r
  | r - l <= 1 = l
  | otherwise = bisearch p l' r'
    where m = (l+r) `div` 2
          (l',r') = if p m then (m,r) else (l,m)

main = do
  [x] <- getInts
  print $ p2 $ bisearch (\a->a*a<=x) 0 (x+1)
  where p2 x = x*x

-- util
getInts :: IO [Integer]
getInts = map (fst . fromJust . B.readInteger) . B.words <$> B.getLine
