Two friends are travelling through Bubble galaxy. They say "Hello!" via signals to each other if their distance is smaller or equal than d_1 and 

  * it's the first time they speak to each other or 
  * at some point in time after their last talk their distance was greater than d_2. 



We need to calculate how many times friends said "Hello!" to each other. For N moments, you'll have an array of points for each friend representing their positions at that moment. A person can stay in the same position between two moments in time, but if a person made a move we assume this movement as movement with constant speed in constant direction.

Input

The first line contains one integer number N (2 ≤ N ≤ 100 000) representing number of moments in which we captured positions for two friends.

The second line contains two integer numbers d_1 and d_2 \ (0 < d_1 < d_2 < 1000). 

The next N lines contains four integer numbers A_x,A_y,B_x,B_y (0 ≤ A_x, A_y, B_x, B_y ≤ 1000) representing coordinates of friends A and B in each captured moment.

Output

Output contains one integer number that represents how many times friends will say "Hello!" to each other.

Example

Input

4
2 5
0 0 0 10
5 5 5 6
5 0 10 5
14 7 10 5


Output

2

Note

<image> Explanation: Friends should send signals 2 times to each other, first time around point A2 and B2 and second time during A's travel from point A3 to A4 while B stays in point B3=B4. 
#Minimum distance between Travel
#A from (x1,y1) to (x2,y2); B from (x3,y3) to (x4,y4)

def minD(x1,y1,x2,y2,x3,y3,x4,y4):
    a1=(x2-x4)-(x1-x3)
    b1=x1-x3
    a2=(y2-y4)-(y1-y3)
    b2=y1-y3
    if a1==0 and a2==0:
        return b1*b1+b2*b2
    if 0<=-(a1*b1+a2*b2)<=(a1*a1+a2*a2):
        return (b1*b1+b2*b2)-1.0*(a1*b1+a2*b2)*(a1*b1+a2*b2)/(a1*a1+a2*a2)
    return min(b1*b1+b2*b2,(a1+b1)*(a1+b1)+(a2+b2)*(a2+b2))

n=int(raw_input())

d1,d2 = map(int, raw_input().split())
d1,d2 = d1*d1, d2*d2

ax0,ay0,bx0,by0=map(int, raw_input().split())
d = (ax0-bx0)*(ax0-bx0)+(ay0-by0)*(ay0-by0)
ct=0
fg=False
if d<=d1:
    ct+=1
    fg=True

#print d

for _ in range(n-1):
    ax,ay,bx,by=map(int, raw_input().split())
    dx=minD(ax0,ay0,ax,ay,bx0,by0,bx,by)
    #print dx
    if fg==False and dx<=d1:
        ct+=1
        fg=True
    d = (ax-bx)*(ax-bx)+(ay-by)*(ay-by)
    if d>d2:
        fg=False
    ax0,ay0,bx0,by0=ax,ay,bx,by

print ct
exit()





