n = int(eval(input()))

xyh = [list(map(int,input().split())) for _ in range(n)]

for i in range(n):

    if(xyh[i][2]!= 0):

        x = xyh[i][0]

        h = xyh[i][2]

        y = xyh[i][1]

        break

for i in range(101):

    for j in range(101):

        H = h+ abs(x - i)+abs(y - j)

        ok = True

        for k in range(n):

            nowx = xyh[k][0]

            nowy = xyh[k][1]

            nowh = xyh[k][2]

            if nowh != max(H - abs(nowx - i) - abs(nowy - j),0):

                ok = False

                break

        if ok :

            print((i,j,H))

            break



                
n = int(eval(input()))

xyh = [list(map(int,input().split())) for _ in range(n)]

#h != 0 であるようなｈをさがし、そのときのx,y.hを変数に保存(このようなｈが少なくとも一つ存在)

for i in range(n):

    if(xyh[i][2]!= 0):

        x = xyh[i][0]

        h = xyh[i][2]

        y = xyh[i][1]

        break

for i in range(101):

    for j in range(101):

        #中心座標を(i,j)で決め打つ

        H = h+ abs(x - i)+abs(y - j)#さっきの(x,y,h)をつかうと、ピラミッドの高さはこうなる

        ok = True#フラグをTrueで初期化、もし条件を満たさないものが一つでもあればダメなので、ok= Falseしてbreak

        #すべての(x,y,h)が条件を満たすものがあれば、それが答え。出力してbreak

        for k in range(n):

            nowx = xyh[k][0]

            nowy = xyh[k][1]

            nowh = xyh[k][2]

            if nowh != max(H - abs(nowx - i) - abs(nowy - j),0):

                ok = False

                break

        if ok :

            print((i,j,H))

            break



                
n = int(eval(input()))
xyh = [list(map(int, input().split())) for _ in range(n)]
for i in range(n):
    if xyh[i][2] != 0:
        x = xyh[i][0]
        h = xyh[i][2]
        y = xyh[i][1]
        break
for i in range(101):
    for j in range(101):
        H = h + abs(x - i) + abs(y - j)
        ok = True
        for k in range(n):
            nowx = xyh[k][0]
            nowy = xyh[k][1]
            nowh = xyh[k][2]
            if nowh != max(H - abs(nowx - i) - abs(nowy - j), 0):
                ok = False
                break
        if ok:
            print((i, j, H))
            break

n = int(eval(input()))
xyh = [list(map(int, input().split())) for _ in range(n)]
# h != 0 であるようなｈをさがし、そのときのx,y.hを変数に保存(このようなｈが少なくとも一つ存在)
for i in range(n):
    if xyh[i][2] != 0:
        x = xyh[i][0]
        h = xyh[i][2]
        y = xyh[i][1]
        break
for i in range(101):
    for j in range(101):
        # 中心座標を(i,j)で決め打つ
        H = h + abs(x - i) + abs(y - j)  # さっきの(x,y,h)をつかうと、ピラミッドの高さはこうなる
        ok = True  # フラグをTrueで初期化、もし条件を満たさないものが一つでもあればダメなので、ok= Falseしてbreak
        # すべての(x,y,h)が条件を満たすものがあれば、それが答え。出力してbreak
        for k in range(n):
            nowx = xyh[k][0]
            nowy = xyh[k][1]
            nowh = xyh[k][2]
            if nowh != max(H - abs(nowx - i) - abs(nowy - j), 0):
                ok = False
                break
        if ok:
            print((i, j, H))
            break

+# h != 0 であるようなｈをさがし、そのときのx,y.hを変数に保存(このようなｈが少なくとも一つ存在) -        H = h + abs(x - i) + abs(y - j) -        ok = True +        # 中心座標を(i,j)で決め打つ +        H = h + abs(x - i) + abs(y - j)  # さっきの(x,y,h)をつかうと、ピラミッドの高さはこうなる +        ok = True  # フラグをTrueで初期化、もし条件を満たさないものが一つでもあればダメなので、ok= Falseしてbreak +        # すべての(x,y,h)が条件を満たすものがあれば、それが答え。出力してbreak