You are given a set of *n* vectors on a plane. For each vector you are allowed to multiply any of its coordinates by -1. Thus, each vector *v*<sub class="lower-index">*i*</sub> = (*x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub>) can be transformed into one of the following four vectors:
 -  *v*<sub class="lower-index">*i*</sub><sup class="upper-index">1</sup> = (*x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub>), -  *v*<sub class="lower-index">*i*</sub><sup class="upper-index">2</sup> = ( - *x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub>), -  *v*<sub class="lower-index">*i*</sub><sup class="upper-index">3</sup> = (*x*<sub class="lower-index">*i*</sub>,  - *y*<sub class="lower-index">*i*</sub>), -  *v*<sub class="lower-index">*i*</sub><sup class="upper-index">4</sup> = ( - *x*<sub class="lower-index">*i*</sub>,  - *y*<sub class="lower-index">*i*</sub>). 
You should find two vectors from the set and determine which of their coordinates should be multiplied by -1 so that the absolute value of the sum of the resulting vectors was minimally possible. More formally, you should choose two vectors *v*<sub class="lower-index">*i*</sub>, *v*<sub class="lower-index">*j*</sub> (1 ≤ *i*, *j* ≤ *n*, *i* ≠ *j*) and two numbers *k*<sub class="lower-index">1</sub>, *k*<sub class="lower-index">2</sub> (1 ≤ *k*<sub class="lower-index">1</sub>, *k*<sub class="lower-index">2</sub> ≤ 4), so that the value of the expression |*v*<sub class="lower-index">*i*</sub><sup class="upper-index">*k*<sub class="lower-index">1</sub></sup> + *v*<sub class="lower-index">*j*</sub><sup class="upper-index">*k*<sub class="lower-index">2</sub></sup>| were minimum.
The first line contains a single integer *n* (2 ≤ *n* ≤ 10<sup class="upper-index">5</sup>). Then *n* lines contain vectors as pairs of integers "*x*<sub class="lower-index">*i*</sub> *y*<sub class="lower-index">*i*</sub>" ( - 10000 ≤ *x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub> ≤ 10000), one pair per line.
5
-7 -3
9 0
-8 6
7 -8
4 -5
3 2 4 2
5
3 2
-4 7
-6 0
-8 4
5 1
3 4 5 4
2
-4 -2
-2 1
1 4 2 3
3
-4 -3
-4 -5
-1 0
2 4 1 1
10
53 86
-48 72
-74 48
75 -91
-31 14
13 67
24 -55
-76 -67
86 5
-84 94
10 2 4 2
10
-65 29
77 29
74 -54
-79 -65
43 46
-12 -92
9 88
28 6
-63 49
-37 17
6 4 7 4
10
-58 72
76 -39
-28 19
93 10
-84 -97
88 99
69 30
-43 53
65 67
-15 -60
6 1 5 1
10
75 15
0 69
-6 -83
-86 61
91 87
87 -60
3 -78
61 -75
17 60
-67 14
6 3 4 3
from math import sqrt

class Point:
	def __init__(self,x,y):
		self.x=x
		self.y=y

def main():
	inp=open("input.txt","r")
	opt=open("output.txt","w")
	n=int(inp.readline())
	dd=dict()
	points=[]
	global ansdist,anspoints
	anspoints=[]
	ansdist=float('inf')
	for i in range(n):
		a,b=map(int,inp.readline().split())
		if a<0 and b<0:
			a=abs(a)
			b=abs(b)
			dd[(a,b)]=[4]
		elif a<0:
			a=abs(a)
			dd[(a,b)]=[2]
		elif b<0:
			b=abs(b)
			dd[(a,b)]=[3]
		else:
			dd[(a,b)]=[1]
		dd[(a,b)].append(i)
		points.append(Point(a,b))

	points.sort(key=lambda p:p.x)
	ypoints=points.copy()
	ypoints.sort(key=lambda p:p.y)
	

	def sqdist(p,q):
		global ansdist,anspoints
		val=(p.x-q.x)**2+(p.y-q.y)**2
		val=sqrt(val)
		if val<ansdist:
			ansdist=val
			anspoints=[p,q]
		return sqrt(val)



	def midStripClosest(pnts,sz,d):

		val=d
		for i in range(sz):
			j=i+1
			while j<sz and pnts[j].y-pnts[i].y<val:
				val=sqdist(pnts[i],pnts[j])
				j+=1

		return val


	def bruteForce(l,r):
		val=float('inf')
		for i in range(l,r):
			for j in range(i+1,r):
				dst=sqdist(points[i],points[j])
				if dst<val:
					val=dst
		return val

	def cloasestUtil(l,r):
		
		nn=r-l+1
		if nn<=3:
			return bruteForce(l,r)
		
		mid=l+(r-l)//2

		dl=cloasestUtil(l,mid)
		dr=cloasestUtil(mid,r)

		d=min(dl,dr)

		midpoints=[]
		ymidpoints=[]
		for i in range(l,r):
			if abs(points[i].x-points[mid].x)<d:
				midpoints.append(points[i])
			if abs(ypoints[i].x-points[mid].x)<d:
				ymidpoints.append(ypoints[i])
		
		midpoints.sort(key=lambda p:p.y)
		min_a=min(d,midStripClosest(midpoints,len(midpoints),d))
		min_b=min(d,midStripClosest(ymidpoints,len(ymidpoints),d))


		return min(min_a,min_b)

	cloasestUtil(0,n-1)

	zzz=int()
	kkk=dd[(anspoints[1].x,anspoints[1].y)][0]
	if kkk==1:
		zzz=4
	elif kkk==2:
		zzz=3
	elif kkk==3:
		zzz=2
	else:
		zzz=1


	opt.write(str(dd[(anspoints[0].x,anspoints[0].y)][1]+1)+" ")
	opt.write(str(dd[(anspoints[0].x,anspoints[0].y)][0])+" ")
	opt.write(str(dd[(anspoints[1].x,anspoints[1].y)][1]+1)+" ")
	opt.write(str(zzz)+"\n")

	inp.close()
	opt.close()



main()

