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


class Line:
    def __init__(self, point_a=None, point_b=None):
        self.point_a = point_a if point_a is not None else Point()
        self.point_b = point_b if point_b is not None else Point()


def find_meeting_point(line_A, line_B):
    # 简化四个点
    x1, y1= line_A.point_a.x, line_A.point_a.y
    x2, y2= line_A.point_b.x, line_A.point_b.y
    x3, y3= line_B.point_a.x, line_B.point_a.y
    x4, y4= line_B.point_b.x, line_B.point_b.y
    # 根据y=kx+b,处理有斜率和ab_x=x1的情况
    if x1==x2:
        ab_is_vertical=True
    else:
        ab_is_vertical=False
        k1=(y2-y1)/(x2-x1)
        b1=y1-k1*x1
    if x3==x4:
        cd_is_vertical=True
    else:
        cd_is_vertical=False
        k2=(y4-y3)/(x4-x3)
        b2=y3-k2*x3
    # 联立方程求交点
    if ab_is_vertical and cd_is_vertical:
        return Point(-1, -1)
    elif ab_is_vertical:
        x=x1
        y=k2*x + b2
    elif cd_is_vertical:
        x=x3
        y=k1*x + b1
    else:
        if k1==k2:
            return Point(-1, -1)
        else:
            x=(b2-b1)/(k1-k2)
            y=k1*x+b1
    return Point(x, y)        



def main():
    data = list(map(float, input().split()))
    data.extend(list(map(float, input().split())))
    A = Point(data[0], data[1])
    B = Point(data[2], data[3])
    C = Point(data[4], data[5])
    D = Point(data[6], data[7])
    AB = Line(A, B)
    CD = Line(C, D)
    ans = find_meeting_point(AB, CD)
    print(f"{ans.x} {ans.y}")


if __name__ == "__main__":
    main()