#include<stdio.h>
#include<math.h>
typedef struct{
        double x;
        double y;
}coordinate;
int cx1, cy1, r1, cx2, cy2, r2;
void ssort(coordinate*, int);
main()
{
        double len, s, f1, f2;
        coordinate tc[4];
        scanf("%d %d %d%*c%d %d %d", &cx1, &cy1, &r1, &cx2, &cy2, &r2);
        len = sqrt(pow(cx1 - cx2, 2) + pow(cy1 - cy2, 2));
        s = atan2(cy2 - cy1, cx2 - cx1);
        f1 = acos((r1 + r2) / len);
        f2 = acos((r1 - r2) / len);
        tc[0].x = r1 * cos(s + f1);
        tc[0].y = r1 * sin(s + f1);
        tc[1].x = r1 * cos(s - f1);
        tc[1].y = r1 * sin(s - f1);
        tc[2].x = r1 * cos(s + f2);
    tc[2].y = r1 * sin(s + f2);
    tc[3].x = r1 * cos(s - f2);
    tc[3].y = r1 * sin(s - f2);
        if(len > (r1 + r2)){
                ssort(tc, 4);
        }else if(len == (r1 + r2)){
                ssort(tc, 3);
        }else if(len > abs(r1 - r2)){
                ssort(tc, 2);
        }else if(len == abs(r1 - r2)){
                printf("%.6f %.6f\n", tc[3].x + cx1, tc[3].y + cy1);
        }
}
void ssort(coordinate *t, int n)
{
        int i, j;
        for(i = 4 - n; i < 4; i++){
                int min = i;
                for(j = i + 1; j < 4; j++){
                        if(t[j].x < t[min].x || (t[j].x == t[min].x && t[j].y < t[min].y)){
                                min = j;
                        }
                }
                printf("%.6f %.6f\n", t[min].x + cx1, t[min].y + cy1);
                t[min] = t[i];
        }
}