solve1 :: Int -> Int -> Int -> Int -> IO()
solve1 x1 y1 x2 y2
  | x1 == x2 = if(y1 < y2)
               then putStrLn $ unwords (map show [x2 - diff, y2, x2 - diff, y1])
               else putStrLn $ unwords (map show [(x2 + diff), y2, (x2 + diff), y1])
  | otherwise = if(x1 < x2)
                then putStrLn $ unwords (map show [x2, (y2 + diff), x1, (y2 + diff)])
                else putStrLn $ unwords (map show [x2, (y2 - diff), x1, (y2 - diff)])
  where
    diff = max (abs (x1 - x2)) (abs (y1 - y2))

solve2 :: Int -> Int -> Int -> Int -> IO()
solve2 x1 y1 x2 y2
  | x1 < x2 && y2 < y1 = putStrLn $ unwords (map show [(x2 + diff2), (y2 + diff1), (x2 + diff2 - diff1), (y2 + diff1 + diff2)])
  | x1 < x2 && y1 < y2 = putStrLn $ unwords (map show [(x2 - diff2), (y2 + diff1), (x2 - diff2 - diff1), (y2 + diff1 - diff2)])
  | x2 < x1 && y1 < y2 = putStrLn $ unwords (map show [(x2 - diff2), (y2 - diff1), (x2 - diff2 + diff1), (y2 - diff1 - diff2)])
  | otherwise = putStrLn $ unwords (map show [(x2 + diff2), (y2 - diff1), (x2 + diff2 + diff1), (y2 - diff1 + diff2)])
  where
    diff1 = abs (x1 - x2)
    diff2 = abs (y1 - y2)

main = do
  [x1, y1, x2, y2] <- (map read . words) <$> getLine
  if(x1 == x2 || y1 == y2)
  then solve1 x1 y1 x2 y2
  else solve2 x1 y1 x2 y2