#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <queue>
#include <cmath>
using namespace std;
 
#define EPS (1e-10)
#define equals (fabs((a)-(b)<EPS)
int n;
 
struct Point
{
    double x, y;
    Point(){}
    Point(double x,double y):x(x),y(y){}
    Point operator +(Point a)
    {//x+a.x,y+a.y
        return Point(x+a.x,y+a.y);
    }
    Point operator -(Point a)
    {//x-a.x,y-a.y
        return Point(x-a.x,y-a.y);
    }
    Point operator *(double a)
    {//x*a,y*a
        return Point(x*a,y*a);
    }
 
    double norm()
    {//x*x+y*y
        return x*x+y*y;
    }
};
Point p1,p2,p3,p4;
double cross(Point a,Point b)
{//a.x*b.y-a.y*b.x
    return a.x*b.y-b.x*a.y;
}
double dot(Point a,Point b)
{//a.x*b.x+a.y*b.y
    return a.x*b.x+a.y*b.y;
}
void solve()
{
   Point a=p2-p1;
   Point b=p4-p3;
   Point c=p3-p1;
   Point d=p4-p1;
   double d1=fabs(cross(a,c));
   double d2=fabs(cross(a,d));
   double t=d1/(d1+d2);
   Point p=p3+b*t;
   printf("%.8lf %.8lf\n",p.x,p.y);
}
 
int main()
{
//    freopen("in.txt","r",stdin);
      scanf("%d",&n);
    while(n--)
    {
        scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p1.x,&p1.y,&p2.x,&p2.y,&p3.x,&p3.y,&p4.x,&p4.y);
        solve();
    }
    return 0;
}