import java.util.*;

public class Main {
    static class Point {
        public double x, y;
        public Point(double x, double y) {
            this.x = x;
            this.y = y;
        }
        public Point() {
            this(0.0, 0.0);
        }
    }

    static class Line {
        public Point point_A, point_B;
        public Line(Point a, Point b) {
            point_A = a;
            point_B = b;
        }
        public Line() {
            point_A = new Point();
            point_B = new Point();
        }
    }
    public static double[] getParam(Line line) {
        double[] nums = new double[3];
        double A1 = line.point_B.y - line.point_A.y;
        double B1 = line.point_A.x - line.point_B.x;
        double C1 = -B1 * line.point_A.y + line.point_A.x * (-A1);
        nums[0] = A1;
        nums[1] = B1;
        nums[2] = C1;
        return nums;
    }
    public static Point findMeetingPoint(Line lineA, Line lineB) {
        double[] lineab = getParam(lineA);
        double[] linecd = getParam(lineB);

        //判是否有重合或平行情况d = a1*b2-a2*b1 = 0
        if (lineab[0] * linecd[1] == linecd[0] * lineab[1]) {
            return new Point(-1.00,-1.00);
        }
        //x = (b1*c2-b2*c1)/(a1*b2-a2*b1)
        double x = (lineab[1] * linecd[2] - linecd[1] * lineab[2]) /
                   (lineab[0] * linecd[1] - linecd[0] * lineab[1]);
        //y = (a2*c1-a1*c2)/(a1*b2-a2*b1)
        double y = (linecd[0] * lineab[2] - lineab[0] * linecd[2]) /
                   (lineab[0] * linecd[1] - linecd[0] * lineab[1]);
        return new Point(x, y);
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Point A = new Point();
        A.x = scanner.nextDouble();
        A.y = scanner.nextDouble();
        Point B = new Point();
        B.x = scanner.nextDouble();
        B.y = scanner.nextDouble();
        Point C = new Point();
        C.x = scanner.nextDouble();
        C.y = scanner.nextDouble();
        Point D = new Point();
        D.x = scanner.nextDouble();
        D.y = scanner.nextDouble();
        Line AB = new Line(A, B);
        Line CD = new Line(C, D);
        Point ans = findMeetingPoint(AB, CD);
        System.out.println(ans.x + " " + ans.y);
        scanner.close();
    }
}