#include<bits/stdc++.h>
#define eps (1e-10)
using namespace std;
class Point
{
public:
double x,y;
Point(double _x=0,double _y=0):x(_x),y(_y){}
Point operator + (Point p){ return Point(x+p.x,y+p.y);}
Point operator - (Point p){ return Point(x-p.x,y-p.y);}
Point operator * (double a){return Point(a*x,a*y);}
Point operator / (double a){return Point(x/a,y/a);}
double norm(){return x*x+y*y;}
double ABS(){return sqrt(norm());}
};
struct Segment
{
Point p1,p2;
};
//判断是否正交 向量内积:a*b=|a||b|*cos(Y) 当cos为0时正交(90,-90垂直)
//a*b=a.x*b.x+a.y*b.y;
bool solve1(Point a,Point b)//是否正交
{
double f=a.x*b.x+a.y*b.y;
if(fabs(f-0.0)<eps) return true;
else return false;
}
//判断是否平行 向量外积:|a*b|=|a||b|sin(Y) 当sin为0时平行(180,0平行)
//|a*b|=|a|*|b|*sin(Y)
bool solve2(Point a,Point b)//是否平行
{
double f=a.x*b.y-a.y*b.x;
if(fabs(f-0.0)<eps) return true;
else return false;
}
double dot(Point a,Point b)
{
return a.x*b.x+a.y*b.y;
}
/*
求垂足x:对于给定的三点p1,p2,p从点p向通过p1,p2的直线引一条垂线
base=p2-p1;
hypo=p-p1;
x=s.p1+base*(hypo*base/|base|^2); hypo*base 可以用向量内积求
*/
Point solve3(Segment s,Point p)//求投影点
{
Point base=s.p2-s.p1;
double r=dot(p-s.p1,base)/base.norm();
return s.p1+base*r;
}
/*
求投影点x:对于给定的三点p1,p2,p从点p向通过p1,p2的直线为对称轴与点p
成线对称点为x
通过求solve3的垂足延长一倍就可以求x
*/
Point solve4(Segment s,Point p)//求映象
{
return p+(solve3(s,p)-p)*2.0;
}
int main()
{
double x1,y1,x2,y2;
scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
Point p1(x1,y1),p2(x2,y2);
Segment s;
s.p1=p1,s.p2=p2;
int T;scanf("%d",&T);
while(T--){
double x,y;scanf("%lf %lf",&x,&y);
Point p(x,y);
Point w=solve4(s,p);
printf("%.10f %.10f\n",w.x,w.y);
}
return 0;
}