import Control.Monad (replicateM)

type Pos = (Int, Int)
type Height = Int

diff :: Pos -> Pos -> Height
diff (x1, y1) (x2, y2) = abs (x1 - x2) + abs (y1 - y2)

veridation :: Pos -> Height -> Pos -> Height -> Bool
veridation x h c ch = h == max 0 ch - diff c x

candidates :: Pos -> Height -> [(Pos, Height)]
candidates x h = map (\p -> (p, h + d p)) [(x', y') | x' <- [0..100], y' <- [0..100]]
  where d = diff x

takeSample :: [(Pos, Height)] -> (Pos, Height)
takeSample xs = head $ filter (\(_, h) -> 0 < h) xs

parse :: IO (Pos, Height)
parse = do
  [x, y, h] <- map read . words <$> getLine
  return ((x, y), h)

fil' :: [(Pos, Height)] -> (Pos, Height) -> [(Pos, Height)]
fil' cs (x,h) = filter (uncurry (veridation x h)) cs

fil :: [(Pos, Height)] -> [(Pos, Height)] -> [(Pos, Height)]
fil ss cs = foldl fil' cs ss

main = do
  n <- read <$> getLine :: IO Int
  samples <- replicateM n parse
  let (sx, sh) = takeSample samples
      cs = candidates sx sh
      ((x,y), h) = head $ fil samples cs
  putStrLn $ show x ++ ' ' : show y ++ ' ' : show h
