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):
    # TODO: 在这里输入你的代码,求直线 line_A 与 line_B 的交点
    xa, xb, xc, xd, ya, yb, yc, yd = (
        line_A.point_A.x,
        line_A.point_B.x,
        line_B.point_A.x,
        line_B.point_B.x,
        line_A.point_A.y,
        line_A.point_B.y,
        line_B.point_A.y,
        line_B.point_B.y,
    )
    dt = (xb - xa) * (yd - yc) - (xd - xc) * (yb - ya)
    if dt == 0:
        return Point(-1, -1)
    else:
        xp, yp = ((xa * yb - xb * ya) * (xc - xd) - (xa - xb) * (xc * yd - xd * yc)) / dt, (
        (xa * yb - xb * ya) * (yc - yd) - (ya - yb) * (xc * yd - xd * yc)
    ) / dt
        return Point(xp, yp)


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()