Problem: For given three points p1, p2, p, find the reflection point x of p onto p1p2.

<image>

Constraints

* 1 ≤ q ≤ 1000
* -10000 ≤ xi, yi ≤ 10000
* p1 and p2 are not identical.

Input


xp1 yp1 xp2 yp2
q
xp0 yp0
xp1 yp1
...
xpq−1 ypq−1


In the first line, integer coordinates of p1 and p2 are given. Then, q queries are given for integer coordinates of p.

Output

For each query, print the coordinate of the reflection point x. The output values should be in a decimal fraction with an error less than 0.00000001.

Examples

Input

0 0 2 0
3
-1 1
0 1
1 1


Output

-1.0000000000 -1.0000000000
0.0000000000 -1.0000000000
1.0000000000 -1.0000000000


Input

0 0 3 4
3
2 5
1 4
0 3


Output

4.2400000000 3.3200000000
3.5600000000 2.0800000000
2.8800000000 0.8400000000

Solution (in CPP):

Solution:
    #include<stdio.h>
    int main()
    {
        double x1,x2,x3,y1,y2,y3,m1,c1,c2,X,Y,m2,xm,ym;
        int i,q;
        scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
        scanf("%d",&q);
        for(i=0;i<q;i++)
        {
            scanf("%lf %lf",&x3,&y3);
            if(x1==x2)
            {
                X=x2;
                Y=y3;
            }
            else if(y1==y2)
            {
                Y=y1;
                X=x3;
            }
            else
            {
                m1=(y1-y2)/(x1-x2);
                c1=y1-m1*x1;
                m2=-1/m1;
                c2=y3-m2*x3;
                X=(c2-c1)/(m1-m2);
                Y=m2*X+c2;}
                xm=2*X-x3;
                ym=2*Y-y3;
            printf("%.10lf %.10lf\n",xm,ym);
        }

    	return 0;
    }

  // ALHAMDULLIAH