#include <cmath>
#include <iomanip>
#include <iostream>
#include <ostream>
#include <vector>
const double kEpsilon = 1e-10;
inline bool equals(double a, double b)
{
    return fabs(a - b) < kEpsilon;
}

class Point
{
  public:
    double x, y;

    Point() = default;
    Point(double x, double y) : x(x), y(y)
    {
    }

    Point operator+(const Point &p)
    {
        return Point(x + p.x, y + p.y);
    }
    Point operator-(const Point &p)
    {
        return Point(x - p.x, y - p.y);
    }
    Point operator*(const double k)
    {
        return Point(x * k, y * k);
    }

    double SquaredNorm()
    {
        return x * x + y * y;
    }
    double abs()
    {
        return sqrt(this->SquaredNorm());
    }

    bool operator<(const Point &p) const
    {
        return x != p.x ? x < p.x : y < p.y;
    }
    bool operator==(const Point &p) const
    {
        return fabs(x - p.x) < kEpsilon && fabs(y - p.y) < kEpsilon;
    }

    double dot(const Point &p) const
    {
        return x * p.x + y * p.y;
    }
    double cross(const Point &p) const
    {
        return x * p.y - y * p.x;
    }
};

double dot(const Point &p1, const Point &p2)
{
    return p1.x * p2.x + p1.y * p2.y;
}
double cross(const Point &p1, const Point &p2)
{
    return p1.x * p2.y - p1.y * p2.x;
}

using Vector = Point;

struct Segment
{
    Point p1, p2;

    Segment() = default;
    Segment(Point p1, Point p2) : p1(p1), p2(p2)
    {
    }
};

Point crossPoint(Segment &s1, Segment &s2)
{
    auto base = s2.p2 - s2.p1;

    auto d1 = fabs(base.cross(s1.p1 - s2.p1)) / base.abs();
    auto d2 = fabs(base.cross(s1.p2 - s2.p2)) / base.abs();

    auto t = d1 / (d1 + d2);

    return s1.p1 + (s1.p2 - s1.p1) * t;
}

int main()
{
    Segment s1, s2;
    int q;
    std::cin >> q;

    for (size_t i = 0; i < q; ++i)
    {
        std::cin >> s1.p1.x >> s1.p1.y;
        std::cin >> s1.p2.x >> s1.p2.y;
        std::cin >> s2.p1.x >> s2.p1.y;
        std::cin >> s2.p2.x >> s2.p2.y;

        std::cout << std::setprecision(20);
        auto p = crossPoint(s1, s2);

        std::cout << p.x << " " << p.y << std::endl;
    }
}

