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]) {
//两直线重合a1*c2 == a2*c1 && b1*c2 == b2*c1
if (lineab[0] * linecd[2] == linecd[0] * lineab[2] &&
lineab[1] * linecd[2] == linecd[1] * lineab[2])return new Point(-1.00, -1.00);
//两直线平行a1*c2 == a2*c1 || b1*c2 == b2*c1
if (lineab[0] * linecd[2] == linecd[0] * lineab[2] ||
lineab[1] * linecd[2] == linecd[1] * lineab[2])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();
}
}