/*  AUTHOR:AKASH JAIN
*   USERNAME:akash19jain
*   DATE:14/10/2019
*/
// #include<algorithm>
// #include <bits/stdc++.h>
// using namespace std;

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
#include<ctype.h>
#define SC1(x)          scanf("%lld",&x)
#define SC2(x,y)        scanf("%lld%lld",&x,&y)
#define SC3(x,y,z)      scanf("%lld%lld%lld",&x,&y,&z)
#define SCS(x)          scanf("\n%s", x)
#define PF1(x)          printf("%lld\n",x)
#define PF2(x,y)        printf("%lld %lld\n",x,y)
#define PF3(x,y,z)      printf("%lld %lld %lld\n",x,y,z)
#define PFN                printf("\n")
#define REP(i,n)        for(long long i=0;i<(n);i++)
#define FOR(i,a,b)      for(long long i=(a);i<=(b);i++)
#define FORD(i,a,b)     for(long long i=(a);i>=(b);i--)
#define WHILE(n)        while(n--)
#define MEM(a, b)       memset(a, (b), sizeof(a))
#define ITOC(c)         ((char)(((ll)'0')+c))
#define MID(s,e)        (s+(e-s)/2)
#define SZ(a)            strlen(a)
#define MOD             1000000007
#define MAX             10000000005
#define MIN             -10000000005
#define PI              3.1415926535897932384626433832795
#define DEB(x)          printf("The value of \"%s\" is: %d\n",#x,x)
#define CASES           ll t;SC1(t);while(t--)
#define ABS(a)          ((a>0)?a:-(a))
#define SWAP(a,b)        ll z=a;a=b;b=z
#define SWAPC(a,b)        char z=a;a=b;b=z

const int INF = 1<<29;
typedef long long ll;
typedef unsigned long long ull;
#define FILEIO(name) \  freopen(name".in", "r", stdin); \   freopen(name".out", "w", stdout);
int cmp(const void * a,const void * b);
long long maxv(long long a,long long b);
long long minv(long long a,long long b);
long long gcd(long long u,long long v);
long long digits(long long n);
bool isPoweroftwo(long long n);

int main()
{
    ll a,b,c;
    SC3(a,b,c);
    if((a+b+c)%2!=0)
    {
        printf("Impossible\n");
        return 0;
    }
    ll x,y,z;
    x=(b+a-c)/2;
    y=(b+c-a)/2;
    z=(c+a-b)/2;
    if(x<0 ||y<0 || z<0)
    {
        printf("Impossible\n");
        return 0;
    }
    PF3(x,y,z);
    return 0;
}

//qsort(arr,n,sizeof(arr[0]),cmp);
int cmp (const void * a, const void * b)
{
    if( *(ll*)a - *(ll*)b < 0 ) return -1;
    if( *(ll*)a - *(ll*)b > 0 ) return 1;
        return 0;
}
long long maxv(long long a,long long b)
{
    if(a>b) return a;
        return b;
}
long long minv(long long a,long long b)
{
    if(a<b) return a;
        return b;
}
long long gcd(long long u,long long v)
{
    if (v == 0) return u;
       return gcd(v, u%v);
}
long long digits(long long n)    //to calculate no of digits in a number
{
    return floor(log10(n))+1;
}
bool isPoweroftwo(long long x)
{
    return x && (!(x&(x-1)));
}

#include <stdio.h>

int main() {
	int a, b, c, x;

	scanf("%d%d%d", &a, &b, &c);
	for (x = 0; x <= a; x++)
		if (b >= a - x && x + (b - (a - x)) == c && c >= x && (a - x) + (c - x) == b) {
			printf("%d %d %d\n", a - x, c - x, x);
			return 0;
		}
	printf("Impossible\n");
	return 0;
}

#include <stdio.h>
int main()
{
	int a,b,c,i,j;
	scanf("%d %d %d",&a,&b,&c);
	i=a-b;
	if(i<0)i*=-1;
	j=a+b+c;
	if(c<i||c>a+b||j%2>0)
		printf("Impossible");
	else
		printf("%d %d %d",j/2-c,j/2-a,j/2-b);
	return 0;
}

#include<stdio.h>
int main()
{
    int a,b,c,i=0,A,B,C;
    scanf("%d %d %d", &a,&b,&c);
   if (a<b+c && b<a+c && c<a+b)
        {
            for(A=1;A<=a;A++)
            {
                C=a-A;
                B=((a+b+c)/2)-(A+C);
                if(A+B+C==((a+b+c)/2) && b==A+B && c==B+C)
                    {printf("%d %d %d",A,B,C);
                    i=0;
                    break;}
                else if (a==1 && b==1 && c==1)
                {printf("Impossible");
                i=0;
                break;}
                i++;
            }
            if(i!=0)
            {
                printf("Impossible");
            }

        }
    else if (a>b+c || b>a+c || c>a+b)
        printf("Impossible");
    else if (a==b+c)
        printf("%d %d %d", b,a-(b+c),c);
    else if (b==a+c)
        printf("%d %d %d", a,c,b-(a+c));
    else if (c==a+b)
        printf("%d %d %d", c-(a+b),b,a);

}

#include<stdio.h>
int main()
{
    long int a,b,c,i,k,x,y,z;
    scanf("%ld %ld %ld",&a,&b,&c);
    if(a>b+c||b>a+c||c>a+b)
    {
        printf("Impossible\n");
    }
    else
    {
        for(i=0;i<=a;i++)
        {
            if(b-i==c-(a-i))
            {
                break;
            }
        }
        if(i>a)
        {
            printf("Impossible\n");
        }
        else
        {
        printf("%ld %ld %ld\n",i,b-i,a-i);
        }
    }
    return 0;
}

#include<stdio.h>
int main()
{
    int a,b,c,i,otw,oth,twth;
    scanf("%d %d %d",&a,&b,&c);
    for(i=0;i<=a;i++)
    {
	otw=i;
	twth=c-a+i;
	oth=a-i;

	if(b-(otw+twth)==0 && otw>=0 && twth>=0 && oth>=0)
	{
	   printf("%d %d %d\n",otw,twth,oth);
	   break;
	}
    }
    if(i>a)
	printf("Impossible\n");
    return 0;
}

#include <stdio.h>
#include <stdlib.h>
int vraie (int m1,int m4 ,int m3 ){
    if ((m4+m3>=m1)&&((m4+m3-m1)%2==0)){
        return 1 ;
    }
    else {
        return 0;
    }
    }
void aff (int h ,int tab1[4], int tab [4]){
    int h1 = (h+2)%3 ;
    int h2 = (h+1)%3 ;
    int c =(tab1[h1]+tab1[h2]-tab1[h])/2 ;
    tab[h]=tab1[h2]-c ;
    tab[h1]=tab1[h1]-c ;
    tab[h2]=c ;
    printf("%d %d %d",tab[0],tab[1],tab[2]) ;

}
int main()
{
    int a,b,c,h ;
    int tab1[4] ;
    int tab[4] ;
    scanf("%d %d %d",&a,&b,&c) ;
    tab1[0]=a ;
    tab1[1]=b ;
    tab1[2]=c ;
    if ((a<=b)&&(b<=c)){
        if (vraie(c,a,b)==1){
            h=2 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }
    else if ((b<=a)&&(a<=c)){
        if (vraie(c,a,b)==1){
            h=2 ;

            aff(h,tab1,tab) ;
        } else {
            printf("Impossible") ;
        }
    }

    else if ((b<=c)&&(c<=a)){
            if (vraie(a,c,b)==1){
            h=0 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    else if ((c<=b)&&(b<=a)){
        if (vraie(a,c,b)==1){
            h=0 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    else if ((c<=a)&&(a<=b)){
        if (vraie(b,c,a)==1){
            h=1 ;

            aff(h,tab1,tab) ;
        }
        else {
            printf("Impossible") ;
        }
    }

    else {
        if (vraie(b,c,a)==1){
            h=1 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    return 0;
}

#include <stdio.h>
#include <stdlib.h>
int vraie (int m1,int m2 ,int m4 ){
    if ((m2+m4>=m1)&&((m2+m4-m1)%2==0)){
        return 1 ;
    }
    else {
        return 0;
    }
    }
void aff (int h ,int tab1[4], int tab [4]){
    int h1 = (h+2)%3 ;
    int h2 = (h+1)%3 ;
    int c =(tab1[h1]+tab1[h2]-tab1[h])/2 ;
    tab[h]=tab1[h2]-c ;
    tab[h1]=tab1[h1]-c ;
    tab[h2]=c ;
    printf("%d %d %d",tab[0],tab[1],tab[2]) ;

}
int main()
{
    int a,b,c,h ;
    int tab1[4] ;
    int tab[4] ;
    scanf("%d %d %d",&a,&b,&c) ;
    tab1[0]=a ;
    tab1[1]=b ;
    tab1[2]=c ;
    if ((a<=b)&&(b<=c)){
        if (vraie(c,a,b)==1){
            h=2 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }
    else if ((b<=a)&&(a<=c)){
        if (vraie(c,a,b)==1){
            h=2 ;

            aff(h,tab1,tab) ;
        } else {
            printf("Impossible") ;
        }
    }

    else if ((b<=c)&&(c<=a)){
            if (vraie(a,c,b)==1){
            h=0 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    else if ((c<=b)&&(b<=a)){
        if (vraie(a,c,b)==1){
            h=0 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    else if ((c<=a)&&(a<=b)){
        if (vraie(b,c,a)==1){
            h=1 ;

            aff(h,tab1,tab) ;
        }
        else {
            printf("Impossible") ;
        }
    }

    else {
        if (vraie(b,c,a)==1){
            h=1 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    return 0;
}

#include <stdio.h>
#include <stdlib.h>
int vraie (int m1,int m2 ,int m3 ){
    if ((m2+m3>=m1)&&((m2+m3-m1)%2==0)){
        return 1 ;
    }
    else {
        return 0;
    }
    }
void aff (int h ,int tab1[4], int tab [4]){
    int h1 = (h+2)%3 ;
    int h2 = (h+1)%3 ;
    int c =(tab1[h1]+tab1[h2]-tab1[h])/2 ;
    tab[h]=tab1[h2]-c ;
    tab[h1]=tab1[h1]-c ;
    tab[h2]=c ;
    printf("%d %d %d",tab[0],tab[1],tab[2]) ;

}
int main()
{
    int a,b,c,h ;
    int tab1[4] ;
    int tab[4] ;
    scanf("%d %d %d",&a,&b,&c) ;
    tab1[0]=a ;
    tab1[1]=b ;
    tab1[2]=c ;
    if ((a<=b)&&(b<=c)){
        if (vraie(c,a,b)==1){
            h=2 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }
    else if ((b<=a)&&(a<=c)){
        if (vraie(c,a,b)==1){
            h=2 ;

            aff(h,tab1,tab) ;
        } else {
            printf("Impossible") ;
        }
    }

    else if ((b<=c)&&(c<=a)){
            if (vraie(a,c,b)==1){
            h=0 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    else if ((c<=b)&&(b<=a)){
        if (vraie(a,c,b)==1){
            h=0 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    else if ((c<=a)&&(a<=b)){
        if (vraie(b,c,a)==1){
            h=1 ;

            aff(h,tab1,tab) ;
        }
        else {
            printf("Impossible") ;
        }
    }

    else {
        if (vraie(b,c,a)==1){
            h=1 ;

            aff(h,tab1,tab) ;
        }
         else {
            printf("Impossible") ;
        }
    }

    return 0;
}

#include <stdio.h>
int main()
{
	int a,b,c,x,y,z;
	scanf("%d %d %d",&a,&b,&c);
	x=(a+b-c)/2;
	y=(b+c-a)/2;
	z=(a+c-b)/2;
	if((a+b+c)%2!=0)
	printf("Impossible");
	else
	{
	if(x>=0&&y>=0&&z>=0)
	printf("%d %d %d",x,y,z);
	else
	printf("Impossible");
	}
	return 0;
 }

#include<stdio.h>
int main(){
    int a,b,c,d;
    scanf("%d%d%d",&a,&b,&c); int order;
    if(a==0 || b==0 || c==0){
    printf("Impossible");
    return 0;
    }
    int max=a;
    order=1;
    if(b>max){
        max=b; order=2;}
    if(c>max){
        max=c; order=3;}
    int i;
    for(i=0;i<=max;i++){
    if(order==1 && (b-i)==(c-(max-i)) && (b-i)>=0){
    printf("%d %d %d",i,b-i,max-i);
    return 0;
    }
    if(order==1 && (c-i)==(b-(max-i)) && (c-i)>=0){
    printf("%d %d %d",max-i,b-i,i);
    return 0;
    }
    if(order==2 && (a-i)==(c-(max-i)) && (a-i)>=0){
    printf("%d %d %d",i,max-i,a-i);
    return 0;
    }
    if(order==2 && (c-i)==(a-(max-i)) && (c-i)>=0){
    printf("%d %d %d",max-i,i,c-i);
    return 0;
    }
    if(order==3 && (a-i)==(b-(max-i)) && (a-i)>=0){
    printf("%d %d %d",a-i,max-i,i);
    return 0;
    }
    if(order==3 && (b-i)==(a-(max-i)) && (b-i)>=0){
    printf("%d %d %d",b-i,i,max-i);
    return 0;
    }
    }
    printf("Impossible");

}

#include<stdio.h>
#include<stdlib.h>
#define swap(a,b) (a)=(a)+(b)-((b)=(a))
int main()
{
	int mols[3];
	int i,j,k,max=0,sum=0;
	for(i=0;i<3;i++)
	{
		scanf("%d",&mols[i]);
		if(mols[i]>max)
		{
			max=mols[i];
			k=i;
		}
		sum+=mols[i];
	}
	int d;
	d=sum-2*mols[k];
	if(d<0||d%2==1)
	{
		printf("Impossible\n");
	}
	else
	{
		d>>=1;
		for(i=0;i<3;i++)
		{
			j=(i+1)%3;
			if(i!=k&&j!=k)
				printf("%d ",d);
			else if(i!=k&&j==k)
				printf("%d ",mols[i]-d);
			else
				printf("%d ",mols[j]-d);
		}
		printf("\n");
	}
	return 0;
}

//molecules.c
#include<stdio.h>
#include<limits.h>
int func(int a,int b,int max)
{
    int count=0;
    int sum=a+b;
    while(1)
    {
            if(sum==max)
            break;
            else
            {
                count++;
                sum-=2;
                if(sum<max)
                {

                    printf("Impossible\n");
                    return ;
                }

            }
    }
    return count;

}
int main()
{
    int a[3];
    int b[3]={0};
    int i,sum=0,max=INT_MIN,sumleft;
    int index;
    for(i=0;i<3;i++)
    {
        scanf("%d",&a[i]);
        sum+=a[i];
        if(max<a[i])
        {
            max=a[i];
            index=i;
        }

    }
    sumleft=sum-max;
    if(sum%2==1|| sumleft<max)
    {
        printf("Impossible\n");
    }
    else
    {
    int one,two,id;
        switch(index)
        {

            case 0 :
                    one=a[1];
                    two=a[2];
                  id= func(one,two,max);
                  printf("%d %d %d\n",a[1]-id,id,a[2]-id);
                  break;

            case 1: one=a[0];
                    two=a[2];
                    id= func(one,two,max);
                    printf("%d %d %d\n",a[0]-id,a[2]-id,id);
                  break;
            case 2: one=a[0];
                    two=a[1];
                    id= func(one,two,max);
                  printf("%d %d %d\n",id,a[1]-id,a[0]-id);
                  break;
        }
    }
    return 0;

}

#include <stdio.h>

int mmax( int a, int b) {
	if ( a > b ) return b;
	else return a;
}

int main()
{
	int i, j, k;
	int a, b, c;
	scanf("%d%d%d", &a, &b, &c);

	i = (b-c+a)/2;
	j = (c+b-a)/2;
	k = (a-b+c)/2;
	if ( i+j == b && i + k == a && j+k == c && i >= 0 && j >= 0 && k >= 0) printf("%d %d %d", i,j,k);
	else printf("Impossible");
	return 0;
}

/*Codeforces Round #200 (Div. 2)    B. Simple Molecules*/
#include <stdio.h>
int Max(int a[],int n);
int main()
{
    int a[4],x,y,z,i,max,min;
    for (i=1;i<=3;i++)
        scanf ("%d",&a[i]);
    max=Max(a,3);
    i=0;
    for (x=0;x<max&&i==0;x++)
    {
        y=a[2]-x;
        z=a[1]-x;
        if (z+y==a[3]&&y>=0&&z>=0)
        {
            printf ("%d %d %d\n",x,y,z);
            i=1;
        }
    }
    if (i==0)
        printf ("Impossible\n");
    return 0;
}
int Max(int a[],int n)
{
    int max=a[1],i;
    for (i=2;i<=n;i++)
    {
        if (max<a[i])
            max=a[i];
    }
    return max;
}

#include <stdio.h>

int main(void) {
    int a,b,c,ans,i,j,x,y,z,max;
    scanf("%d %d %d",&a,&b,&c);
    if(a>b+c || b>a+c || c>a+b || (a+b+c)%2!=0)
    printf("Impossible");
    else
    {

        if(b>a && b>c)
        max=b;
        else if(a>b && a>c)
        max=a;
        else
        max=c;

        if(max==a)
        {
            y=(b+c-a)/2;
            x=b-y;
            z=c-y;
            //printf("a");
        }
        else if(max==b)
        {
            z=(a+c-b)/2;
            x=a-z;
            y=c-z;
            //printf("b");
        }
        else if(max==c)
        {
            x=(a+b-c)/2;
            z=a-x;
            y=b-x;
            //printf("c");
        }
        printf("%d %d %d",x,y,z);
    }
    return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c;
    int one_two = 0, one_three = 0, two_three = 0;
    scanf("%d %d %d", &a, &b, &c);
    if(a+b<c || a+c < b || b+c < a || (a+b+c)%2 == 1){
        printf("Impossible\n");
    }
    else{
        one_three = (a+c-b)/2;
        one_two = a-one_three;
        two_three = b - one_two;
        printf("%d %d %d\n", one_two, two_three, one_three);
    }
    return 0;
}

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a, b, c, i, j, k=0, aray[3], mx, mn, md;
    scanf("%d %d %d", &a, &b, &c);
    if(a==b && b==c){
        if(a%2==1) printf("Impossible");
        else printf("%d %d %d",a/2, a/2, a/2);
        return 0;
    }
    else if(a+b==c){
        printf("%d %d %d", 0, b, a);
    }
    else if(b+c==a){
        printf("%d %d %d", b, 0, c);
    }
    else if(c+a==b){
        printf("%d %d %d", a, c, 0);
    }
    else{
        aray[0]=a;
        aray[1]=b;
aray[2]=c;
        for(i=1;i<3;i++){
            j=i;
            while(j>0 && aray[j]<aray[j-1]){
                aray[j]^=aray[j-1];
                aray[j-1]^=aray[j];
                aray[j]^=aray[j-1];
                j--;
            }
        }
        mx=aray[2];
        mn=aray[0];
        md=aray[1];
        if(mn+md<mx){
            printf("Impossible");
            return 0;
        }
        else{
            if(a+b>c){
                while(a+b!=c){
                    k++;
                    a--;
                    b--;
                    if(a+b<c){
                        break;
                    }
                }
                if(a+b==c){
                    printf("%d %d %d", k, b, a);
                }
                else{
                    printf("Impossible");
                }
            }
            else if(b+c>a){
                while(c+b!=a){
                    k++;
                    c--;
                    b--;
                    if(c+b<a){
                        break;
                    }
                }
                if(c+b==a){
                    printf("%d %d %d",b, k, c);
                }
                else{
                    printf("Impossible");
                }
            }
            else if(c+a>b){
                while(a+c!=b){
                    k++;
                    a--;
                    c--;
                    if(a+c<b){
                        break;
                    }
                }
                if(a+c==b){
                    printf("%d %d %d", a, c, k);
                }
                else{
                    printf("Impossible");
                }
            }
        }

    }

    return 0;
}

#include <stdio.h>

int main()
{
    int a, b, c, x, y, z, s;
    scanf("%d %d %d", &a, &b, &c);
    s = a + b + c;
    if (s % 2)
    {
        printf("Impossible");
        return 0;
    }
    s /= 2;
    if (s - c >= 0)
        x = s - c;
    else
    {
        printf("Impossible");
        return 0;
    }
    if (s - a >= 0)
        y = s - a;
    else
    {
        printf("Impossible");
        return 0;
    }
    if (s - b >= 0)
        z = s - b;
    else
    {
        printf("Impossible");
        return 0;
    }
    printf("%d %d %d", x, y, z);
    return 0;
}

#include <stdio.h>
#include <conio.h>
int a,b,c;
int main(){
	scanf("%d %d %d",&a,&b,&c);
	if((a+b+c)%2==0 && a+b>=c && a+c>=b && b+c>=a){
		printf("%d %d %d\n",(a+b-c)/2,(b+c-a)/2,(a+c-b)/2);
	}
	else printf("Impossible\n");
	return 0;
}

#include <stdio.h>
int main() {
    int a,b,c,x,m,arr[3],i,j,y;
    scanf("%d%d%d",&a,&b,&c);
    if(a>b+c||b>a+c||c>a+b){
        printf("Impossible\n");
        return 0;
    }
    arr[0]=a;arr[1]=b;arr[2]=c;
    for(i=1;i<=2;i++)
        for(j=0;j<=2-i;j++)
        {

    if(arr[j+1]<arr[j])
        {
        x=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=x;
        }
    }
    x=(arr[1]+arr[0]-arr[2]);
    y=x/2;
    //printf("%d\n",y);
    if(x%2!=0||arr[1]+arr[0]-2*y!=arr[2]){
        printf("Impossible\n");
        return 0;
    }
    if(arr[2]==c){
        printf("%d %d %d\n",y,b-y,a-y);
    }
    else if(arr[2]==a){
        printf("%d %d %d\n",b-y,y,c-y);
    }
    else if(arr[2]==b){
        printf("%d %d %d\n",a-y,c-y,y);
    }
    return 0;

}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    long long int a , b , c , counter , diff1 , diff2 , temp ;
    int flag1 = 0 , flag2 = 0;
    scanf("%I64d %I64d %I64d",&a ,&b,&c);
    if ( b > c){
        temp = b;
        b = c ;
        c = temp ;
        flag1 ++;
    }
    if ( a > c){
        temp = a ;
        a = c;
        c = temp;
        flag2 ++ ;
    }
    for (counter = 0 ; counter <= c ; counter ++){
        if ( (a - counter) == (b - (c - counter)) && a >= counter && b >= (c - counter) ){
                if (flag1 == 0 && flag2 == 0){
                    printf("%I64d %I64d %I64d", a - counter , c - counter , counter);
                    return 0;
                }
                if ( flag1 == 1 && flag2 == 0){
                    printf("%I64d %I64d %I64d", counter , c - counter   ,a - counter);
                    return 0;
                }
                if (flag1 == 1 && flag2 == 1){
                    printf("%I64d %I64d %I64d",c - counter , counter , a - counter );
                    return 0;
                }
                if (flag2 == 1 && flag1 == 0){
                    printf("%I64d %I64d %I64d",c - counter, a - counter , counter);
                    return 0;
                }
        }
        else if ( (b - counter) == (a - (c - counter)) && a>= (c - counter) && (b >= counter )){
                if (flag1 == 0 && flag2 == 0){
                       printf("%I64d %I64d %I64d" , b - counter , counter , c - counter);
                       return 0;
                    }
                if (flag1 == 1 && flag2 == 0){
                        printf("%I64d %I64d %I64d" ,c - counter  , counter , b - counter );
                        return 0;
                    }
                if ( flag1 == 1 && flag2 == 1){
                        printf("%I64d %I64d %I64d" ,counter ,c - counter , b - counter );
                        return 0;
                    }
                if (flag2 == 1 && flag1 == 0){
                       printf("%I64d %I64d %I64d" ,counter , b - counter ,  c - counter);
                       return 0;
                }
        }
    }
    printf("Impossible");
    return 0;
}

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a,b,c;

    scanf("%d %d %d",&a,&b,&c);

    int K = (a+b-c)/2;
    int K2 = (b+c-a)/2;
    if(K >= 0 && K2>= 0 && a- K >=0 && 2*(K + K2 + (a - K)) == (a + b + c))
    {
        printf("%d %d %d\n",K,K2,a-K);
    }
    else
    {
        printf("Impossible\n");
    }
    return 0;
}

#include <stdio.h>

int main(void) {
    int a,b,c,i,n,f=0;
    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);
    n=a;
    for(i=0;i<=n;i++)
    {
        if((b-i)==(c-n+i))
        {
            if((b-i<0) || (c-n+i<0))
            continue;
            f=1;
            break;
        }

    }
    if(f==1)
    printf("%d %d %d",i,b-i,n-i);
    else
    printf("Impossible");

    return 0;
}

#include <stdio.h>
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    int x,y,z;
    if(a+b-c>=0&&(a+b-c)%2==0){
        x=(a+b-c)/2;
        y=a-x;
        z=c-y;
        if(y>=0&&z>=0){
            printf("%d %d %d",x,z,y);
        }
        else printf("Impossible");
    }
    else printf("Impossible");
    return 0;
}

#include <stdio.h>
int main(void)
{
    int a,b,c,d,e,f,s;
    scanf("%d%d%d",&a,&b,&c);
    if((a+b+c)%2==1){
        printf("Impossible\n");
        return 0;
    }
    else{
        s=(a+b+c)/2;
        d=s-c;
        e=s-b;
        f=s-a;
        if(d>=0&&e>=0&&f>=0){
            printf("%d %d %d\n",d,f,e);
            return 0;
        }
    }
    printf("Impossible\n");
    return 0;
}

#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[])
{
    int a, b, c;
    int x, y, z;
    while(scanf("%d%d%d",&a, &b, &c) != EOF)
    {
       for(x = 0 ; x <= a; x++)
       {
           y = b -x;
           if(y < 0)
               continue;
           if(c - y == a -x)
           {
               z = c - y;
               if(z < 0)
                   continue;
               break;
           }
       }
        if(x > a)
            printf("Impossible\n");
        else
            printf("%d %d %d\n", x, y, z);
    }
    return 0;
}

#include<stdio.h>
int main()
{
	int a,b,c,i,x,y,z,max,flag=0;
	scanf("%d %d %d",&a,&b,&c);
	if(a >= b && a >= c) max=a;
	if(b >= a && b >= c) max=b;
	if(c >= a && c >= b) max=c;
//	printf("max is %d\n",max);
	for(i=0;i<max;i++)
	{
	//printf("1 %d %d\n",b-1,a-1);
		x=i;
		y=b-i;
		z=a-i;
		if(y+z == c)
		{
			flag=1;
			break;
		}
	}
	if(x>=0 && y>=0 && z>=0 && flag==1)
		printf("%d %d %d\n",x,y,z);
	else
		printf("Impossible\n");
	return 0;
}

#include<stdio.h>
int main(){
int va,vb,vc,nab,nbc,nca;
scanf("%d %d %d",&va,&vb,&vc);
nab=(va+vb-vc)/2;
nbc=(vb+vc-va)/2;
nca=(vc+va-vb)/2;
if((va+vb+vc)%2!=0)
printf("Impossible\n");
else if(nab<0||nbc<0||nca<0)
printf("Impossible\n");
else if(nab==0&&nbc==0||nbc==0&&nca==0||nca==0&&nab==0)
printf("Impossible\n");
else
printf("%d %d %d\n",nab,nbc,nca);
return 0;
}

#include <stdio.h>
#include <conio.h>

int a,b,c,maxe;
int s,t,i,check;
int main()
{

    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);

    if(a>=b)
    {
        if(c>=a)
        {
            maxe=c;
            molecule(a,b,maxe);

        }
        else
            {
            maxe=a;
            molecule(b,c,maxe);
            }
    }
    else if(b>=a)
        {
            if(c>=b)
            {

            maxe=c;
        molecule(a,b,maxe);
        }
        else
        {
            maxe=b;
            molecule(a,c,maxe);
        }
           }
           return 0;
}
    molecule(int u,int v,int muxe)
    {
  check=1;
    for(i=0;i<=muxe;i++)
    {

        s=u-i;
        t=v-(muxe-i);
        if(s==t)
        {
          if(i>=0&&(muxe-i)>=0&&s>=0){
          out(i,muxe-i,s);
          check=0;
          }
        }

    }
    if(check)
        printf("Impossible");
    }
   int out(int x,int y,int z)
    {

       if(a>=b)
    {
        if(c>=a)
        {
            maxe=c;
            printf("%d ",z);
            printf("%d ",y);
            printf("%d ",x);
        }
        else
            {
            maxe=a;
            printf("%d ",x);
            printf("%d ",z);
            printf("%d ",y);

            }
    }
   else if(b>=a)
           {

               if(c>=b)
            {

            maxe=c;
            printf("%d ",z);
            printf("%d ",y);
            printf("%d ",x);
        }
        else
        {
            maxe=b;
            printf("%d ",x);
            printf("%d ",y);
            printf("%d ",z);
        }
           }
           return 0;
           }

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a,b,c;
	int x,y,z;
	scanf("%d %d %d",&a,&b,&c);
	if(abs(c-a-b)%2 == 0 && abs(b-c-a)%2 == 0 && abs(c-a-b)%2 == 0)
	{
		x = (c-a-b)/(-2);
		y = (b-c-a)/(-2);
		z = (a-b-c)/(-2);
		if(x >= 0 && y >= 0 && z >= 0)
		{
			printf("%d %d %d\n",x,z,y);
		}
		else
		{
			printf("Impossible\n");
		}
	}
	else
	{
		printf("Impossible\n");
	}
	return 0;
}

#include<stdio.h>
int main()
{
	int x,y,z,a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if(a==0 || b==0 || c==0)
	{
		printf("Impossible");
		return 0;
	}
	/*if(a>12 || b>12 || c>12)
	{
		printf("Impossible");
		return 0;
	}*/
	if((a+b+c)%2!=0)
	{
		printf("Impossible");
		return 0;
	}
	x=(a+b-c)/2;
	y=(b+c-a)/2;
	z=(a+c-b)/2;
	if(x<0 || y<0 || z<0){
		printf("Impossible");
		return 0;}

	if(x==0 && y==0 && z==0){
		printf("Impossible");
		return 0;}
	if(x==0 && y==0 || x==0 && z==0 && y==0 && z==0){
		printf("Impossible");
		return 0;}
	else
		printf("%d %d %d",x,y,z);

	return 0;
}

#include <stdio.h>

int max3 (int a, int b, int c);

int main ()
{
    int b, c, d, e, i, j, g, temp, total;
    scanf ("%d", &c);
    scanf ("%d", &d);
    scanf ("%d", &e);
    total = (c + d + e) / 2;
    b = max3(c, d, e);
    if ( ((2*b - c - d - e) > -2) && ((2*b - c - d - e) != 0))
    {
        printf ("Impossible\n");
    }
    else
    {
        if ((2*b - c - d - e) % -2 < 0)
        {
            printf ("Impossible\n");
        }
        else
        {
            printf ("%d %d %d\n", (total - e), (total - c), (total - d));
        }
    }
return 0;
}
int max3 (int c, int d, int e)
{
    if (c > d)
    {
        if ( c > e)
        {
            return c;
        }
        else
        {
            return e;
        }
    }
    else
    {
        if (d > e)
        {
            return d;
        }
        else
        {
            return e;
        }
    }
}

#include<stdio.h>

int main(void){
  int a,b,c,i,flg,S,ans[3]={0};
  scanf("%d %d %d",&a,&b,&c);
  S=a+b+c;
  flg=0;
  if(S%2) puts("Impossible");
  else{
    S/=2;
    ans[0]=S-c;
    ans[1]=S-a;
    ans[2]=S-b;
    for(i=0;i<3;i++){
      if(ans[i]<0){
	puts("Impossible");
	flg=1;
	break;
      }
    }
    if(!flg) printf("%d %d %d\n",ans[0],ans[1],ans[2]);
  }
  return 0;
}

#include<stdio.h>
#include<string.h>
int max(int a,int b,int c)
{
	if(a>=b && a>=c) return 1;
	else if(b>a && b>=c) return 2;
	else return 3;
}
int main()
{
	int a,b,c,i,s1=0,s2=0,s3=0,index;
	scanf("%d %d %d",&a,&b,&c);
	while(a>0 && b>0 && c>0)
	{
		if(a==1 && b==1 && c==1)
		{ printf("Impossible\n");break;}
		index=max(a,b,c);
		if(index==1) { a=a-2; b--;c--;s1++;s2++;}
		else if(index==2) {b=b-2; a--;c--; s1++;s3++;}
		else { c=c-2;a--;b--; s2++;s3++;}
	}
	if(a==0)
	{
		if(b!=c) printf("Impossible\n");
		else printf("%d %d %d\n",s1,s3+b,s2);
	}
	else if(b==0)
	{
		if(a!=c) printf("Impossible\n");
		else printf("%d %d %d\n",s1,s3,s2+a);

	}
	else if(c==0)
	{
		if(a!=b) printf("Impossible\n");
		else printf("%d %d %d\n",s1+a,s3,s2);
	}
	return 0;
}

#include<stdio.h>
int main()
{
    long long a,b,c,x,y,z;
    scanf("%lld%lld%lld",&a,&b,&c);
    if((a+b+c)%2==0)
    {
        x=(a+b-c)/2;
        y=(b+c-a)/2;
        z=(c+a-b)/2;
        if(x>=0 && y>=0 && z>=0)
        printf("%lld %lld %lld\n",x,y,z);
        else
        printf("Impossible\n");
    }
        else
        printf("Impossible\n");
        return 0;
}

#include<stdio.h>
int main()
{
	int sum,a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	sum=(a+b+c)/2;
	if((a+b+c)%2==1 || a==0 || b==0 || c==0 || sum<a || sum< b || sum<c)
		printf("Impossible\n");
	else
		printf("%d %d %d\n",sum-c,sum-a,sum-b);
	return 0;
}

#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 15
int main()
{
    int a,b,c,x,y,z;
    while(scanf("%d%d%d",&a,&b,&c)!=EOF)
    {
        x=a+b-c;
    y=b+c-a;
    z=a+c-b;
    if(x%2==0&&y%2==0&&z%2==0&&x>=0&&y>=0&&z>=0)
        printf("%d %d %d\n",x/2,y/2,z/2);
    else
        printf("Impossible\n");
    }
    return 0;
}

#include <stdio.h>

int main()
{
	int a,b,c,i;
	scanf("%d %d %d",&a,&b,&c);
	for(i=0;i<=a;++i)
	{
		if(b-i==c-a+i&&(b-i)>=0&&(c-a+i)>=0)
		{
			printf("%d %d %d\n",i,b-i,a-i);
			return 0;
		}
	}
	printf("Impossible\n");
	return 0;
}

#include<stdio.h>
int main()
{
	int a,b,c,x,y,z;
	scanf("%d %d %d",&a,&b,&c);
	int res1=b-c+a;
	int res2=b-a+c;
	int res3=a-b+c;
	x=res1/2;
	y=res2/2;
	z=res3/2;
	int count=0;
	if(x==0)count++;
	if(y==0)count++;
	if(z==0)count++;
	int x1=res1%2;
	int y1=res2%2;
	int z1=res3%2;
	int flag=0;
	if(x<0 || y<0 || z<0)
	{
		flag=1;
	}
	if((res1>2 && x1!=0)  || (res2>2 && y1!=0) || (res3>2 && z1!=0))
		flag=1;
	if(count>1)
		flag=1;
	//if(x1!=0 || y1!=0 || z1!=0)
	//	printf("Impossible");
	if(flag==0)
		printf("%d %d %d",x,y,z);
	else
	{
		printf("Impossible");
		//printf("%d %d %d",x,y,z);
	}
	return 0;
}

#include <stdio.h>
#include <math.h>

int main(){
int a,b,c, semisuma, a_b, b_c, c_a;
scanf("%d %d %d", &a,&b,&c);
semisuma=(a+b+c)/2;

b_c=semisuma-a;
a_b=semisuma-c;
c_a=semisuma-b;

if ((a+b+c)%2 || b_c<0 || a_b<0 || c_a<0) printf("Impossible");
else printf("%d %d %d", a_b,b_c,c_a);

return(0);
}

#include<stdio.h>
int main()
{
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if((a+b+c)%2!=1&&(a+b>=c&&a+c>=b&&b+c>=a))
    printf("%d %d %d",(a+b-c)/2,(b+c-a)/2,(a+c-b)/2);
    else
    printf("Impossible");
    return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    long long int a, b, c, d, e, f;
    scanf("%I64d %I64d %I64d", &a, &b, &c);
    if ((a + b + c) % 2) printf("Impossible\n");
    else {
        d = (b + c - a) / 2;
        e = (c + a - b) / 2;
        f = (b + a - c) / 2;
        if ((d < 0) || (e < 0) || (f < 0)) printf("Impossible\n");
        else if ((d == 0) && (e == 0)) printf("Impossible\n");
        else if ((e == 0) && (f == 0)) printf("Impossible\n");
        else if ((d == 0) && (f == 0)) printf("Impossible\n");
        else printf("%I64d %I64d %I64d\n", f, d, e);
    }
    return 0;
}

#include<stdio.h>
int main()
{
	int a,b,c;
	int x,y,z;

	int sum = 0;

	scanf("%d%d%d",&a,&b,&c);

	sum = (a + b + c)/2;

	if((a + b + c) % 2 != 0 || sum - a  < 0 || sum - b < 0 || sum - c < 0)
	{
		printf("Impossible\n");
	}
	else
	{
		printf("%d %d %d\n",sum-c,sum-a,sum-b);
	}

	return 0;
}

#include<stdio.h>
int main()
{
    int a,b,c,bond12,bond13,bond23,bond32,i,flag=0,cnt;
    scanf("%d %d %d",&a,&b,&c);
    for(i=0;i<=a;i++)
    {
        bond12=i;
        bond13=a-i;
        bond23=b-bond12;
        bond32=c-bond13;
        if((bond23==bond32)&&(bond23>=0))
        {
            cnt=0;
            if(bond12)
            cnt++;
            if(bond23)
            cnt++;
            if(bond13)
            cnt++;
            if(cnt>1)
            {
                flag=1;
                break;
            }
        }
    }
    if(flag)
    printf("%d %d %d",bond12,bond23,bond13);
    else
    printf("Impossible");
    return 0;
}

#include<stdio.h>
int main()
{
	int a[3],i,j,temp,p,q,r,flag,num;
	for(i=0;i<3;i++)
	{
		scanf("%d",&a[i]);
	}
	num=a[0];
	flag=0;
	while(num>=0&&flag==0)
	{
		p=num;
		q=a[1]-num;
		r=a[0]-num;
	//	printf("%d %d %d\n",p,q,r);
		if(q+r==a[2]&&q>=0)
		{
			flag=1;
			printf("%d %d %d\n",p,q,r);
		}
		num--;
	}
	if(flag==0)
	{
		printf("Impossible\n");
	}
	return 0;
}

#include<stdio.h>
int main()
{long long a,b,c,m,n,i,j,cnt,k,a1,a2,a3;
scanf("%I64d%I64d%I64d",&a,&b,&c);

for(i=0;i<=a;i++)
{
if((a+b+c)==2*(b+a-i))
{cnt=1; break;}
else
cnt=0;
}
a1=i; a2=b-i; a3=a-i;
if(cnt==1&&a1>-1&&a2>-1&&a3>-1)
printf("%I64d %I64d %I64d",a1,a2,a3);
else
printf("Impossible");
return 0;
}

#include<stdio.h>
int main()
{
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        int a,b,c;
        a = (x+y-z)/2;
        b = (x+z-y)/2;
        c = (y+z-x)/2;
        if (a*b*c < 0 || (a==1 && b==1 && c==1))
                printf("Impossible");
        else
                printf("%d %d %d",a,b,c);
        return 0;
}

#include<stdio.h>
#include<stdlib.h>

int main()
{
	int n1, n2, n3;
	scanf("%d%d%d", &n1, &n2, &n3);
	int b12=(n1+n2-n3)/2;
	if(b12<0)
		printf("Impossible\n");
	else
		printf("%d %d %d\n", b12, n2-b12, n1-b12);

	return 0;
}

#include <stdio.h>
int main()
{
int a[3],n[3],i,k,sum=0,c=0;
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
sum=sum/2;
for(i=1;i<3;i++)
{
n[i]=sum-a[i-1];
}
n[0]=sum-a[2];
for(i=0;i<3;i++)
{
if(n[i]>a[i])
{printf("Impossible");
return 0;}
if(n[i]==0)
	c++;

}
if(c==3)
	{printf("Impossible");
return 0;}
for(i=0;i<3;i++)
printf("%d ",n[i]);

return 0;

}

#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 15
int main()
{
    int a,b,c,x,y,z;
    while(scanf("%d%d%d",&a,&b,&c)!=EOF)
    {
        x=a+b-c;
    y=b+c-a;
    z=a+c-b;
    if(x%2==0&&y%2==0&&z%2==0&&x>=0&&y>=0&&z>=0)
        printf("%d %d %d\n",x/2,y/2,z/2);
    else
        printf("Impossib\n");
    }
    return 0;
}

#include<stdio.h>
int main()
{
	int a,b,c,x,y,z;
	scanf("%d %d %d",&a,&b,&c);
	int res1=b-c+a;
	int res2=b-a+c;
	int res3=a-b+c;
	x=res1/2;
	y=res2/2;
	z=res3/2;
	int count=0;
	if(x==0)count++;
	if(y==0)count++;
	if(z==0)count++;
	int x1=res1%2;
	int y1=res2%2;
	int z1=res3%3;
	int flag=0;
	if(x<0 || y<0 || z<0)
	{
		flag=1;
	}
	if(count>1)
		flag=1;
	//if(x1!=0 || y1!=0 || z1!=0)
	//	printf("Impossible");
	if(flag==0)
		printf("%d %d %d",x,y,z);
	else
		printf("Impossible");
	return 0;
}

#include<stdio.h>
int main()
{
	int a,b,c;
	float x,y,z;
	scanf("%d %d %d",&a,&b,&c);
	x=(a+b-c)/2;
	y=(b+c-a)/2;
	z=(c+a-b)/2;
	if(x!=(int)x||y!=(int)y||z!=(int)z||x<0||y<0||z<0)
	{
		printf("Impossible\n");
	}
	else
	{
		printf("%d %d %d\n",(int)x,(int)y,(int)z);
	}
	return 0;

}

#include<stdio.h>
int main()
{
    long long a,b,c,x,y,z;
    scanf("%lld%lld%lld",&a,&b,&c);
    if((a+b+c)%2==0)
    {
        x=(a+b-c)/2;
        y=(b+c-a)/2;
        z=(c+a-b)/2;
        if(x>=0 && y>=0 && z>=0)
        printf("%lld %lld %lld\n",x,y,z);
        else
        printf("impossible\n");
    }
        else
        printf("impossible\n");
        return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num[3];
    int num_r[3];
    int i,j,k,t;
    for(i = 0;i < 3;i++)
    {
        scanf("%d",&num[i]);
    }
    for(i = 0;i <= num[0];i++)
    {
        j = num[1] - i;
        k = num[2] - j;
        if(num[0] == i + k && num[1] == j + i && num[2] == j + k)
        {
            if(i < 0 || j < 0 || k < 0)
            {
                printf("Impossible");
                return 0;
            }
            if(i == 0 && j == 0 || i == 0 && k == 0 || j == 0 && k == 0)
            {
                printf("Impossible");
                return 0;
            }
            num_r[0] = i;
            num_r[1] = j;
            num_r[2] = k;
            for(i = 0; i < 3; i++)
            {
                if(i == 0);
                else
                    printf(" ");
                printf("%d",num_r[i]);
                t = 1;
            }
        }
    }
    if(t != 1)
    {
        printf("Impossible");
    }

    return 0;
}

/* Problem: 344B - Simple Molecules */
/* Solver: Gusztav Szmolik */

#include <stdio.h>

int main ()
    {
    unsigned int a;
    unsigned int b;
    unsigned int c;
    unsigned short sol;
    unsigned int d;
    unsigned int r;
    unsigned int mbc;

    if (scanf("%u %u %u",&a,&b,&c) != 3)
        return -1;
    if (a < 1 || a > 1000000 || b < 1 || b > 1000000 || c < 1 || c > 1000000)
        return -1;
    sol = 1;
    d = (b > c ? b-c : c-b);
    if (a < d)
        sol = 0;
    else
        {
        r = a-d;
        mbc = (b > c ? c : b);
        if (r%2 || 2*mbc < a)
            sol = 0;
        }
    if (sol)
        {
        printf ("%u ",(b == mbc ? r/2 : r/2+d));
        printf ("%u ",mbc-r/2);
        printf ("%u\n",(b == mbc ? r/2+d : r/2));
        }
    else
        printf ("Impossible\n");
    return 0;
    }

#include <stdio.h>
#include <math.h>

int main(){
int a,b,c, semisuma, a_b, b_c, c_a;
scanf("%d %d %d", &a,&b,&c);
semisuma=(a+b+c)/2;

b_c=semisuma-a;
a_b=semisuma-c;
c_a=semisuma-b;

if (semisuma%2) printf("Impossible");
else printf("%d %d %d", a_b,b_c,c_a);

return(0);
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num[3];
    int num_r[3];
    int i,j,k,t;
    for(i = 0;i < 3;i++)
    {
        scanf("%d",&num[i]);
    }
    for(i = 0;i < num[0];i++)
    {
        j = num[1] - i;
        k = num[2] - j;
        if(num[0] == i + k && num[1] == j + i && num[2] == j + k)
        {
            if(i < 0 || j < 0 || k < 0)
            {
                printf("Impossible");
                return 0;
            }
            if(i == 0 && j == 0 || i == 0 && k == 0 || j == 0 && k == 0)
            {
                printf("Impossible");
                return 0;
            }
            num_r[0] = i;
            num_r[1] = j;
            num_r[2] = k;
            for(i = 0; i < 3; i++)
            {
                if(i == 0);
                else
                    printf(" ");
                printf("%d",num_r[i]);
                t = 1;
            }
        }
    }
    if(t != 1)
    {
        printf("Impossible");
    }

    return 0;
}

#include <stdio.h>
int main()
{
	int a,b,c,x,y,z;
	scanf("%d %d %d",&a,&b,&c);
	x=(a+b-c)/2;
	y=(b+c-a)/2;
	z=(a+c-b)/2;
	if(x>=0&&y>=0&&z>=0)
	printf("%d %d %d",x,y,z);
	else
	printf("Impossible");
	return 0;
 }

#include<stdio.h>
int main()
{
    long long int a,b,c,d,i,j;
    scanf("%lld%lld%lld",&a,&b,&c);
    if((a+b)%c==0 || (b+c)%a==0 || (c+a)%b==0)
    {
        printf("0 1 1\n");
    }
    else printf("Impossible\n");
    return 0;
}

#include <stdio.h>
int main()
{
int a[3],n[3],i,k,sum=0;
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
sum=sum/2;
for(i=1;i<3;i++)
{
n[i]=sum-a[i-1];
}
n[0]=sum-a[2];
for(i=0;i<3;i++)
{
if(n[i]>a[i])
{printf("Impossible");
return 0;}

}

for(i=0;i<3;i++)
printf("%d ",n[i]);

return 0;

}

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
	int a,b,c,x,y,z;
	scanf("%d%d%d",&a,&b,&c);
	x=(a+b+c)/2-c;
	y=(a+b+c)/2-a;
	z=(a+b+c)/2-b;
	if(x<0 || y<0 || z<0) printf("Impossible\n");
	else printf("%d %d %d\n",x,y,z);
	return 0;
}

#include<stdio.h>
int main(){
    int a,b,c,d;
    scanf("%d%d%d",&a,&b,&c); int order;
    if(a==0 || b==0 || c==0){
    printf("Impossible");
    return 0;
    }
    int max=a;
    order=1;
    if(b>max){
        max=b; order=2;}
    if(c>max){
        max=c; order=3;}
    int i;
    for(i=0;i<=max;i++){
    if(order==1 && (b-i)==(c-(max-i)) && (b-i)>=0){
    printf("%d %d %d",i,b-i,max-i);
    return 0;
    }
    if(order==1 && (c-i)==(b-(max-i)) && (c-i)>=0){
    printf("%d %d %d",max-i,b-i,i);
    return 0;
    }
    if(order==2 && (a-i)==(c-(max-i)) && (a-i)>=0){
    printf("%d %d %d",i,max-i,a-i);
    return 0;
    }
    if(order==2 && (c-i)==(a-(max-i)) && (c-i)>=0){
    printf("%d %d %d",max-i,i,c-i);
    return 0;
    }
    if(order==3 && (a-i)==(b-(max-i)) && (a-i)>=0){
    printf("%d %d %d",a-i,max-i,i);
    return 0;
    }
    if(order==3 && (b-i)==(a-(max-i)) && (b-i)>=0){
    printf("%d %d %d",a-i,i,max-i);
    return 0;
    }
    }
    printf("Impossible");

}

#include<stdio.h>
int main()
{
	int a[3],i,j,temp,p,q,r,flag,num;
	for(i=0;i<3;i++)
	{
		scanf("%d",&a[i]);
	}
	num=a[0];
	flag=0;
	while(num>=0&&flag==0)
	{
		p=num;
		q=a[1]-num;
		r=a[0]-num;
		if(q+r==a[2])
		{
			flag=1;
			printf("%d %d %d\n",p,q,r);
		}
		num--;
	}
	if(flag==0)
	{
		printf("Impossible\n");
	}
	return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c;
    int one_two = 0, one_three = 0, two_three = 0;
    scanf("%d %d %d", &a, &b, &c);
    if(a+b<c || a+c < b || b+c < a){
        printf("Impossible\n");
    }
    else{
        one_three = (a+c-b)/2;
        one_two = a-one_three;
        two_three = b - one_two;
        printf("%d %d %d\n", one_two, two_three, one_three);
    }
    return 0;
}

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a,b,c;

    scanf("%d %d %d",&a,&b,&c);

    int K = (a+b-c)/2;
    int K2 = (b+c-a)/2;
    if(K >= 0 && K2>= 0 && 2*(K + K2 + (a - K)) == (a + b + c))
    {
        printf("%d %d %d\n",K,K2,a-K);
    }
    else
    {
        printf("Impossible\n");
    }
    return 0;
}

#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	if(a>b+c || b>c+a || c>a+b)
		printf("Impossible");
	else
		printf("%d %d %d",(a+b-c)/2,(b+c-a)/2,(a+c-b)/2);
	return 0;
}

#include <stdio.h>

int main() {
	int a, b, c, x, y, z;

	scanf("%d%d%d", &a, &b, &c);
	x = (a + b - c) / 2;
	y = (c + a - b) / 2;
	z = (b + c - a) / 2;
	if ((a + b + c) % 2 != 0 || x < 0 || y < 0 || z < 0)
		printf("Impossible\n");
	else
		printf("%d %d %d\n", z, y, x);
	return 0;
}

#include <stdio.h>

int main()
{

	int a, b, c;
	int x, y, z, sum;

	scanf("%d%d%d", &a, &b, &c);
	sum = a + b + c;

	if((sum & 1) == 1)
	{
		puts("Impossible");
		return 0;
	}
	y = (a - b + c) / 2;
	x = a - y;
	z = c - y;
	if(x <= 0 || y <= 0 || z <= 0)
	{
		puts("Impossible");
	}
	else
	{
		printf("%d %d %d\n",x, z, y);
	}
	return 0;
}

#include<stdio.h>
int main()
{
    int a,b,c,A,B,C;
    scanf("%d %d %d", &a,&b,&c);
    if (a<b+c && b<a+c && c<a+b)
        {
            for(A=1;A<=a;A++)
            {
                C=a-A;
                B=((a+b+c)/2)-(A+C);
                if(A+B+C==((a+b+c)/2) && b==A+B && c==B+C)
                    printf("%d %d %d",A,B,C);
                    break;
            }
        }
    else if (a>b+c || b>a+c || c>a+b)
        printf("Impossible");
    else if (a==b+c)
        printf("%d %d %d", b,a-(b+c),c);
    else if (b==a+c)
        printf("%d %d %d", a,c,b-(a+c));
    else if (c==a+b)
        printf("%d %d %d", c-(a+b),b,a);

}

#include <stdio.h>

#define min(a, b) ((a) < (b) ? (a):(b))

int main(void){
  int x, a, b, c;
  scanf("%d%d%d", &a, &b, &c);
  int limit = min(a, min(b, c));
  for(x = 0; x <= limit; x++){
    if(b-a + 2*x == c){
      printf("%d %d %d\n", a-x, b+x-a, x);
      break;
    }
  }
  if(x == limit+1) printf("Impossible\n");
  return 0;
}

#include<stdio.h>

int main(void){
  int a,b,c,i,flg,S,ans[3]={0};
  scanf("%d %d %d",&a,&b,&c);
  S=a+b+c;
  flg=0;
  if(S%2) puts("Impossible");
  else{
    S/=2;
    ans[0]=S-a;
    ans[1]=S-b;
    ans[2]=S-c;
    for(i=0;i<3;i++){
      if(ans[i]<0){
	puts("Impossible");
	flg=1;
	break;
      }
    }
    if(!flg) printf("%d %d %d\n",ans[0],ans[1],ans[2]);
  }
  return 0;
}

#include <stdio.h>

int max3 (int a, int b, int c);

int main ()
{
    int b, c, d, e, i, j, g, temp, total;
    scanf ("%d", &c);
    scanf ("%d", &d);
    scanf ("%d", &e);
    total = (c + d + e) / 2;
    b = max3(c, d, e);
    if ((2*b - c - d - e) > 0 )
    {
        printf ("Imposible\n");
    }
    else
    {
        printf ("%d %d %d\n", (total - e), (total - c), (total - d));
    }
return 0;
}
int max3 (int c, int d, int e)
{
    if (c > d)
    {
        if ( c > e)
        {
            return c;
        }
        else
        {
            return e;
        }
    }
    else
    {
        if (d > e)
        {
            return d;
        }
        else
        {
            return e;
        }
    }
}

#include <stdio.h>
int main() {
    int a,b,c,x,m,arr[3],i,j,y;
    scanf("%d%d%d",&a,&b,&c);
    if(a>b+c||b>a+c||c>a+b){
        printf("Impossible\n");
        return 0;
    }
    arr[0]=a;arr[1]=b;arr[2]=c;
    for(i=1;i<=2;i++)
        for(j=0;j<=2-i;j++)
        {

    if(arr[j+1]<arr[j])
        {
        x=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=x;
        }
    }
    x=(arr[1]+arr[0]-arr[2]);
    y=x/2;
    //printf("%d\n",y);
    if(x%2!=0||arr[1]+arr[0]-2*y!=arr[2]){
        printf("Impossible\n");
        return 0;
    }
    if(arr[2]==c){
        printf("%d %d %d\n",y,arr[1]-y,arr[0]-y);
    }
    else if(arr[2]==a){
        printf("%d %d %d\n",b-y,y,c-y);
    }
    else if(arr[2]==b){
        printf("%d %d %d\n",a-y,c-y,y);
    }
    return 0;

}

#include<stdio.h>
int main()
{
    long long int a,b,c=0,s=0,n,m,l;
    scanf("%lld%lld%lld",&n,&m,&l);
    s=(n+m+l)/(2.0);
    c=s-n;
    a=s-m;
    b=s-l;
    if(c>=0 && a>=0 && b>=0 && !(a+b==0 || b+c==0 || c+a==0))
        printf("%lld %lld %lld",b,c,a);
    else
        printf("Impossible");
    return 0;
}

#include <stdio.h>

int main() {
	int a, b, c, x, y, z;

	scanf("%d%d%d", &a, &b, &c);
	x = (a + b - c) / 2;
	y = (c + a - b) / 2;
	z = (b + c - a) / 2;
	if ((a + b + c) % 2 != 0 || x < 0 || y < 0 || z < 0)
		printf("Impossible\n");
	else
		printf("%d %d %d\n", x, y, z);
	return 0;
}

#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	int x,y,z;
	x=(b+c-a)/2;
	y=(a+c-b)/2;
	z=(a+b-c)/2;
	if(a+b-c>=0&&b+c-a>=0&&a+c-b>=0)
	printf("%d %d %d",z,x,y);
	else
		printf("Impossible");
return 0;
}

#include<stdio.h>
int main(){
    int a,b,c,d;
    scanf("%d%d%d",&a,&b,&c); int order;
    if(a==0 || b==0 || c==0){
    printf("Impossible");
    return 0;
    }
    int max=a;
    order=1;
    if(b>max){
        max=b; order=2;}
    if(c>max){
        max=c; order=3;}
    int i;
    for(i=0;i<=max;i++){
    if(order==1 && (b-i)==(c-(max-i)) && (b-i)>=0){
    printf("%d %d %d",i,b-i,max-i);
    return 0;
    }
    if(order==1 && (c-i)==(b-(max-i)) && (c-i)>=0){
    printf("%d %d %d",max-i,b-i,i);
    return 0;
    }
    if(order==2 && (a-i)==(c-(max-i)) && (a-i)>=0){
    printf("%d %d %d",i,max-i,a-i);
    return 0;
    }
    if(order==2 && (c-i)==(a-(max-i)) && (c-i)>=0){
    printf("%d %d %d",a-i,max-i,i);
    return 0;
    }
    if(order==3 && (a-i)==(b-(max-i)) && (a-i)>=0){
    printf("%d %d %d",a-i,max-i,i);
    return 0;
    }
    if(order==3 && (b-i)==(a-(max-i)) && (b-i)>=0){
    printf("%d %d %d",i,max-i,a-i);
    return 0;
    }
    }
    printf("Impossible");

}

#include<stdio.h>
int main()
{
	int a,b,c;
	int x,y,z;

	int sum = 0;

	scanf("%d%d%d",&a,&b,&c);

	sum = (a + b + c)/2;

	if(sum % 2 != 0 || sum - a  < 0 || sum - b < 0 || sum - c < 0)
	{
		printf("Impossible\n");
	}
	else
	{
		printf("%d %d %d\n",sum-c,sum-a,sum-b);
	}

	return 0;
}

#include <stdio.h>
#include <math.h>

int main(){
int a,b,c, semisuma, a_b, b_c, c_a;
scanf("%d %d %d", &a,&b,&c);
semisuma=(a+b+c)/2;

b_c=semisuma-a;
a_b=semisuma-c;
c_a=semisuma-b;

if (semisuma%2) printf("Impossible");
else printf("%d %d %d", a_b,b_c,c_a);

return(0);
}

#include <stdio.h>
#include <conio.h>

int a,b,c,maxe;
int s,t,i,check;
int main()
{

    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);

    if(a>=b)
    {
        if(c>=a)
        {
            maxe=c;
            molecule(a,b,maxe);

        }
        else
            {
            maxe=a;
            molecule(b,c,maxe);
            }
    }
    else if(b>=a)
        {
            if(c>=b)
            {

            maxe=c;
        molecule(a,b,maxe);
        }
        else
        {
            maxe=b;
            molecule(a,c,maxe);
        }
           }
           return 0;
}
    molecule(int u,int v,int muxe)
    {
  check=1;
    for(i=0;i<=(muxe/2);i++)
    {

        s=u-i;
        t=v-(muxe-i);
        if(s==t)
        {
          if(i>=0&&(muxe-i)>=0&&s>=0){
          out(i,muxe-i,s);
          check=0;
          }
        }

    }
    if(check)
        printf("Impossible");
    }
   int out(int x,int y,int z)
    {

       if(a>=b)
    {
        if(c>=a)
        {
            maxe=c;
            printf("%d ",z);
            printf("%d ",y);
            printf("%d ",x);
        }
        else
            {
            maxe=a;
            printf("%d ",x);
            printf("%d ",z);
            printf("%d ",y);

            }
    }
   else if(b>=a)
           {

               if(c>=b)
            {

            maxe=c;
            printf("%d ",z);
            printf("%d ",y);
            printf("%d ",x);
        }
        else
        {
            maxe=b;
            printf("%d ",x);
            printf("%d ",y);
            printf("%d ",z);
        }
           }
           return 0;
           }

#include <stdio.h>
int main()
{
int a[3],n[3],i,k,sum=0;
for(i=0;i<3;i++)
{
scanf("%d",&a[i]);
sum=sum+a[i];
}
sum=sum/2;
for(i=1;i<3;i++)
{
n[i]=sum-a[i-1];
}
n[0]=sum-a[2];
for(i=0;i<3;i++)
{
if(n[i]>a[i])
{printf("Impossible");
return 0;}

}

for(i=0;i<3;i++)
printf("%d ",n[i]);

return 0;

}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    long long int a , b , c , counter , diff1 , diff2 , temp ;
    int flag1 = 0 , flag2 = 0;
    scanf("%I64d %I64d %I64d",&a ,&b,&c);
    if ( b > c){
        temp = b;
        b = c ;
        c = temp ;
        flag1 ++;
    }
    if ( a > c){
        temp = a ;
        a = c;
        c = temp;
        flag2 ++ ;
    }
    for (counter = 0 ; counter <= c ; counter ++){
        if ( (a - counter) == (b - (c - counter)) && a >= counter && b >= (c - counter) ){
                if (flag1 == 0 && flag2 == 0){
                    printf("%I64d %I64d %I64d", a - counter , c - counter , counter);
                    return 0;
                }
                if ( flag1 == 1 && flag2 == 0){
                    printf("%I64d %I64d %I64d", counter , c - counter   ,a - counter);
                    return 0;
                }
                if (flag1 == 1 && flag2 == 1){
                    printf("%I64d %I64d %I64d",c - counter , counter , a - counter );
                    return 0;
                }
                if (flag2 == 1 && flag1 == 0){
                    printf("%I64d %I64d %I64d",c - counter, a - counter , counter);
                    return 0;
                }
        }
        else if ( (b - counter) == (a - (c - counter)) && a>= (c - counter) && (b >= counter )){
                if (flag1 == 0 && flag2 == 0){
                       printf("%I64d %I64d %I64d" , b - counter , counter , c - counter);
                       return 0;
                    }
                if (flag1 == 1){
                        printf("%I64d %I64d %I64d" ,c - counter , b - counter , counter  );
                        return 0;
                    }
                if ( flag1 == 1 && flag2 == 2){
                        printf("%I64d %I64d %I64d" ,counter ,c - counter , b - counter );
                        return 0;
                    }
                if (flag2 == 1 && flag1 == 0){
                       printf("%I64d %I64d %I64d" ,counter , b - counter ,  c - counter);
                       return 0;
                }
        }
    }
    printf("Impossible");
    return 0;
}

/*Codeforces Round #200 (Div. 2)    B. Simple Molecules*/
#include <stdio.h>
int Max(int a[],int n);
int Min(int a[],int n);
int main()
{
    int a[4],x,y,z,i,max,min;
    for (i=1;i<=3;i++)
        scanf ("%d",&a[i]);
    max=Max(a,3);
    min=Min(a,3)-1;
    i=0;
    for (x=min/3;x<max&&i==0;x++)
    {
        y=a[2]-x;
        z=a[1]-x;
        if (z+y==a[3]&&y>=0&&z>=0)
        {
            printf ("%d %d %d\n",x,y,z);
            i=1;
        }
    }
    if (i==0)
        printf ("Impossible\n");
    return 0;
}
int Max(int a[],int n)
{
    int max=a[1],i;
    for (i=2;i<=n;i++)
    {
        if (max<a[i])
            max=a[i];
    }
    return max;
}
int Min(int a[],int n)
{
    int min=a[1],i;
    for (i=2;i<=n;i++)
    {
        if (min>a[i])
            min=a[i];
    }
    return min;
}

#include<stdio.h>
int main()
{
	int a,b,c,x,y,z;
	scanf("%d %d %d",&a,&b,&c);
	int res1=b-c+a;
	int res2=b-a+c;
	int res3=a-b+c;
	x=res1/2;
	y=res2/2;
	z=res3/2;
	int x1=res1%2;
	int y1=res2%2;
	int z1=res3%3;
	int flag=0;
	if(x<0 || y<0 || z<0)
	{
		printf("Impossible");
		flag=1;
	}
	//if(x1!=0 || y1!=0 || z1!=0)
	//	printf("Impossible");
	if(flag==0)
		printf("%d %d %d",x,y,z);
	return 0;
}

/*  AUTHOR:AKASH JAIN
*   USERNAME:akash19jain
*   DATE:14/10/2019
*/
// #include<algorithm>
// #include <bits/stdc++.h>
// using namespace std;

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
#include<ctype.h>
#define SC1(x)          scanf("%lld",&x)
#define SC2(x,y)        scanf("%lld%lld",&x,&y)
#define SC3(x,y,z)      scanf("%lld%lld%lld",&x,&y,&z)
#define SCS(x)          scanf("\n%s", x)
#define PF1(x)          printf("%lld\n",x)
#define PF2(x,y)        printf("%lld %lld\n",x,y)
#define PF3(x,y,z)      printf("%lld %lld %lld\n",x,y,z)
#define PFN                printf("\n")
#define REP(i,n)        for(long long i=0;i<(n);i++)
#define FOR(i,a,b)      for(long long i=(a);i<=(b);i++)
#define FORD(i,a,b)     for(long long i=(a);i>=(b);i--)
#define WHILE(n)        while(n--)
#define MEM(a, b)       memset(a, (b), sizeof(a))
#define ITOC(c)         ((char)(((ll)'0')+c))
#define MID(s,e)        (s+(e-s)/2)
#define SZ(a)            strlen(a)
#define MOD             1000000007
#define MAX             10000000005
#define MIN             -10000000005
#define PI              3.1415926535897932384626433832795
#define DEB(x)          printf("The value of \"%s\" is: %d\n",#x,x)
#define CASES           ll t;SC1(t);while(t--)
#define ABS(a)          ((a>0)?a:-(a))
#define SWAP(a,b)        ll z=a;a=b;b=z
#define SWAPC(a,b)        char z=a;a=b;b=z

const int INF = 1<<29;
typedef long long ll;
typedef unsigned long long ull;
#define FILEIO(name) \  freopen(name".in", "r", stdin); \   freopen(name".out", "w", stdout);
int cmp(const void * a,const void * b);
long long maxv(long long a,long long b);
long long minv(long long a,long long b);
long long gcd(long long u,long long v);
long long digits(long long n);
bool isPoweroftwo(long long n);

int main()
{
    ll a,b,c;
    SC3(a,b,c);
    if((a+b+c)%2!=0)
    {
        printf("Impossible\n");
        return 0;
    }
    PF3((b+c-a)/2,(c+a-b)/2,(b+a-c)/2);
    return 0;
}

//qsort(arr,n,sizeof(arr[0]),cmp);
int cmp (const void * a, const void * b)
{
    if( *(ll*)a - *(ll*)b < 0 ) return -1;
    if( *(ll*)a - *(ll*)b > 0 ) return 1;
        return 0;
}
long long maxv(long long a,long long b)
{
    if(a>b) return a;
        return b;
}
long long minv(long long a,long long b)
{
    if(a<b) return a;
        return b;
}
long long gcd(long long u,long long v)
{
    if (v == 0) return u;
       return gcd(v, u%v);
}
long long digits(long long n)    //to calculate no of digits in a number
{
    return floor(log10(n))+1;
}
bool isPoweroftwo(long long x)
{
    return x && (!(x&(x-1)));
}

#include<stdio.h>
int main(){
int a1,a2,a0,x,y,z;
scanf("%d",&a0);

scanf("%d",&a1);
scanf("%d",&a2);
x=(a0-a2+a1)/2;
y=(a1-a0+a2)/2;
z=(a2-a1+a0)/2;
if(x==0 && y==0 && z==0)

printf("Impossible\n");
else if(x>=0 && y>=0 && z>=0)
printf("%d %d %d\n",x,y,z );
else
printf("Impossible\n");
return 0;
}

#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[])
{
    int a, b, c;
    int max, min, mid;
    int i;
    while(scanf("%d%d%d",&a, &b, &c) != EOF)
    {
        max = min = a;
        if(b > max)
            max = b;
        if(c > max)
            max = c;
        if(b < min)
            min = b;
        if(c < min)
            min = c;
        mid = a + b + c - max - min;
        if((min + mid) < max)
        {
            printf("Impossible\n");
        }
        else
        {
            printf("%d %d %d\n", abs(a - b), abs(b - c), abs(c - a));
        }
    }
    return 0;
}

#include <stdio.h>

int main()
{
	int a,b,c,i;
	scanf("%d %d %d",&a,&b,&c);
	for(i=0;i<=a;++i)
	{
		if(b-i==c-a+i)
		{
			printf("%d %d %d\n",i,b-i,a-i);
			return 0;
		}
	}
	printf("Impossible\n");
	return 0;
}

#include<stdio.h>
int main()
{
    long long int a,b,c=0,s=0,n,m,l;
    scanf("%lld%lld%lld",&n,&m,&l);
    s=(n+m+l)/(2.0);
    c=s-n;
    a=s-m;
    b=s-l;
    if(c>=0 && a>=0 && b>=0)
        printf("%lld %lld %lld",b,c,a);
    else
        printf("Impossible");
    return 0;
}

#include<stdio.h>
#include<string.h>
int max(int a,int b,int c)
{
    if(a>=b && a>=c) return 1;
    else if(b>a && b>=c) return 2;
    else return 3;
}
int main()
{
    int a,b,c,i,s1=0,s2=0,s3=0,index;
    scanf("%d %d %d",&a,&b,&c);
    while(a>0 && b>0 && c>0)
    {
        if(a==1 && b==1 && c==1)
        { printf("Impossible\n");break;}
        index=max(a,b,c);
        if(index==1) { a=a-2; b--;c--;s1++;s2++;}
        else if(index==2) {b=b-2; a--;c--; s1++;s3++;}
        else { c=c-2;a--;b--; s2++;s3++;}
    }
    if(a==0)
    {
        if(b!=c) printf("Impossible\n");
        else printf("%d %d %d\n",s1,s2,s3+b);
    }
    else if(b==0)
    {
        if(a!=c) printf("Impossible\n");
        else printf("%d %d %d\n",s1,s2+a,s3);

    }
    else if(c==0)
    {
        if(a!=b) printf("Impossible\n");
        else printf("%d %d %d\n",s1+a,s2,s3);
    }
    return 0;
}

#include <stdio.h>

#define min(a, b) ((a) < (b) ? (a):(b))

int main(void){
  int x, a, b, c;
  scanf("%d%d%d", &a, &b, &c);
  int limit = min(a, min(b, c));
  for(x = 0; x <= limit; x++){
    if(b-a + 2*x == c){
      printf("%d %d %d\n", a-x, b+x-a, x);
      break;
    }
  }
  if(x == limit+1) printf("Imposible\n");
  return 0;
}

#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	long long int x,y,z;

	x=(a+b-c)/2;
	y=(b+c-a)/2;
	z=(a+c-b)/2;

	if(x>=0 && y>=0 && z>=0)
		printf("%lld %lld %lld\n",x,y,z);
	else
		printf("Impossible\n");
	return 0;
}

//molecules.c
#include<stdio.h>
#include<limits.h>
int func(int a,int b,int max)
{
    int count=0;
    int sum=a+b;
    while(1)
    {
            if(sum==max)
            break;
            else
            {
                count++;
                sum-=2*count;
                if(sum<max)
                {
                    printf("Impossible\n");
                    return ;
                }

            }
    }
    return count;

}
int main()
{
    int a[3];
    int b[3]={0};
    int i,sum=0,max=INT_MIN,sumleft;
    int index;
    for(i=0;i<3;i++)
    {
        scanf("%d",&a[i]);
        sum+=a[i];
        if(max<a[i])
        {
            max=a[i];
            index=i;
        }

    }
    sumleft=sum-max;
    if(sum%2==1|| sumleft<max)
    {
        printf("Impossible\n");
    }
    else
    {
    int one,two,id;
        switch(index)
        {

            case 0 :
                    one=a[1];
                    two=a[2];
                  id= func(one,two,max);
                  printf("%d %d %d\n",a[1]-id,id,a[2]-id);
                  break;

            case 1: one=a[0];
                    two=a[2];
                    id= func(one,two,max);
                    printf("%d %d %d\n",a[0]-id,a[2]-id,id);
                  break;
            case 2: one=a[0];
                    two=a[1];
                    id= func(one,two,max);
                  printf("%d %d %d\n",id,a[1]-id,a[0]-id);
                  break;
        }
    }
    return 0;

}

#include <stdio.h>
int main(){
	int a, b, c;
	int x, y, z;
	int i;
	scanf("%d %d %d", &a, &b, &c);
	if(a>=b&&c>=b){
		x=b;
		y=0;
		z=0;
		for(i=1; i<=b; i++){
			y++;
			z++;
			x--;
			if(x==0)
				break;
			if((a-x)==(c-y)){
				printf("%d %d %d\n", x, y, a-x);
				return 0;
			}
		}
		printf("Impossible\n");
	}else if(c>=a&&b>=a){
		x=a;
		y=0;
		z=0;
		for(i=1; i<=a; i++){
			y++;
			z++;
			x--;
			if(x==0)
				break;
			if((b-x)==(c-z)){
				printf("%d %d %d\n", x, b-x, z);
				return 0;
			}
		}
		printf("Impossible\n");
	}else{
		x=0;
		y=c;
		z=0;
		for(i=1; i<=c; i++){
			y--;
			z++;
			x++;
			if (y==0)
				break;
			if((a-z)==(b-y)){
				printf("%d %d %d\n", a-z, y, z);
				return 0;
			}
		}
		printf("Impossible\n");
	}
	return 0;
}

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a,b,c;

    scanf("%d %d %d",&a,&b,&c);

    int K = (a+b-c)/2;
    int K2 = (b+c-a)/2;
    if(K >= 0 && K2>= 0 && 2*(K + K2 + (a - K)) == (a + b + c))
    {
        printf("%d %d %d\n",K,K2,a-K);
    }
    else
    {
        printf("Impossible\n");
    }
    return 0;
}

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a, b, c, i, j, k=0, aray[3], mx, mn, md;
    scanf("%d %d %d", &a, &b, &c);
    if(a==b && b==c){
        printf("Impossible");
        return 0;
    }
    else if(a+b==c){
        printf("%d %d %d", 0, b, a);
    }
    else if(b+c==a){
        printf("%d %d %d", b, 0, c);
    }
    else if(c+a==b){
        printf("%d %d %d", a, c, 0);
    }
    else{
        aray[0]=a;
        aray[1]=b;
        aray[2]=c;
        for(i=1;i<3;i++){
            j=i;
            while(j>0 && aray[j]<aray[j-1]){
                aray[j]^=aray[j-1];
                aray[j-1]^=aray[j];
                aray[j]^=aray[j-1];
                j--;
            }
        }
        mx=aray[2];
        mn=aray[0];
        md=aray[1];
        if(mn+md<mx){
            printf("Impossible");
            return 0;
        }
        else{
            if(a+b>c){
                while(a+b!=c){
                    k++;
                    a--;
                    b--;
                    if(a+b<c){
                        break;
                    }
                }
                if(a+b==c){
                    printf("%d %d %d", k, b, a);
                }
                else{
                    printf("Impossible");
                }
            }
            else if(b+c>a){
                while(c+b!=a){
                    k++;
                    c--;
                    b--;
                    if(c+b<a){
                        break;
                    }
                }
                if(c+b==a){
                    printf("%d %d %d",b, k, c);
                }
                else{
                    printf("Impossible");
                }
            }
            else if(c+a>b){
                while(a+c!=b){
                    k++;
                    a--;
                    c--;
                    if(a+c<b){
                        break;
                    }
                }
                if(a+c==b){
                    printf("%d %d %d", a, c, k);
                }
                else{
                    printf("Impossible");
                }
            }
        }

    }

    return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num[3];
    int num_r[3];
    int i,j,k;
    for(i = 0;i < 3;i++)
    {
        scanf("%d",&num[i]);
    }
    for(i = 0;i < num[0];i++)
    {
        j = num[1] - i;
        k = num[2] - j;
        if(num[0] == i + k && num[1] == j + i && num[2] == j + k)
        {
            if(i < 0 || j < 0 || k < 0)
            {
                printf("Impossible");
                return 0;
            }
            if(i == 0 && j == 0 || i == 0 && k == 0 || j == 0 && k == 0)
            {
                printf("Impossible");
                return 0;
            }
            num_r[0] = i;
            num_r[1] = j;
            num_r[2] = k;
        }
    }
    for(i = 0; i < 3; i++)
    {
        printf("%3d",num_r[i]);
    }
    return 0;
}

#include<stdio.h>
main()
{
	int a,b,c,i,j,k,d;
	scanf("%d %d %d",&a,&b,&c);
	d=(a+b+c)/2;
	i=d-c;
	j=d-a;
	k=d-b;
	if(i<0 || j<0 ||k<0|| i+j+k !=d)
	printf("impossible");
	else
	printf("%d %d %d",i,j,k);
}

#include<stdio.h>
int main()
{
	int a,b,c;
	int x,y,z;

	int sum = 0;

	scanf("%d%d%d",&a,&b,&c);

	sum = (a + b + c)/2;

	if(sum - a  < 0 || sum - b < 0 || sum - c < 0)
	{
		printf("Impossible\n");
	}
	else
	{
		printf("%d %d %d\n",sum-c,sum-a,sum-b);
	}

	return 0;
}

#include <stdio.h>

int main() {
	int a, b, c, x, y, z;

	scanf("%d%d%d", &a, &b, &c);
	x = (a + b - c) / 2;
	y = (c + a - b) / 2;
	z = (b + c - a) / 2;
	if ((a + b + c) % 2 != 0 || x < 0 || y < 0 || z < 0)
		printf("Impossible\n");
	else
		printf("%d %d %d\n", z, y, x);
	return 0;
}

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int a,b,c;
	int x,y,z;
	scanf("%d %d %d",&a,&b,&c);
	if(abs(c-a-b)%2 == 0 && abs(b-c-a)%2 == 0 && abs(c-a-b)%2 == 0)
	{
		x = (c-a-b)/(-2);
		y = (b-c-a)/(-2);
		z = (a-b-c)/(-2);
		if(x > 0 && y > 0 && z > 0)
		{
			printf("%d %d %d\n",x,z,y);
		}
		else
		{
			printf("Impossible\n");
		}
	}
	else
	{
		printf("Impossible\n");
	}
	return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c;
    int one_two = 0, one_three = 0, two_three = 0;
    scanf("%d %d %d", &a, &b, &c);
    if(a+b<c || a+c < b || b+c < a){
        printf("Impossible\n");
    }
    else{
        one_three = (a+c-b)/2;
        one_two = a-one_three;
        two_three = b - one_two;
        printf("%d %d %d\n", one_two, two_three, one_three);
    }
    return 0;
}

#include <stdio.h>

int main(void) {
    int a,b,c,ans,i,j,x,y,z,max;
    scanf("%d %d %d",&a,&b,&c);
    if(a>b+c || b>a+c || c>a+b || (a+b+c)%2!=0)
    printf("Impossible");
    else
    {

        if(b>a && b>c)
        max=b;
        else if(a>b && a>c)
        max=a;
        else
        max=c;

        if(max==a)
        {
            y=(b+c-a)/2;
            x=b-y;
            z=c-y;
            printf("a");
        }
        else if(max==b)
        {
            z=(a+c-b)/2;
            x=a-z;
            y=c-z;
            printf("b");
        }
        else if(max==c)
        {
            x=(a+b-c)/2;
            z=a-x;
            y=b-x;
            printf("c");
        }
        printf("%d %d %d",x,y,z);
    }
    return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num[3];
    int num_r[3];
    int i,j,k,t;
    for(i = 0;i < 3;i++)
    {
        scanf("%d",&num[i]);
    }
    for(i = 0;i < num[0];i++)
    {
        j = num[1] - i;
        k = num[2] - j;
        if(num[0] == i + k && num[1] == j + i && num[2] == j + k)
        {
            if(i < 0 || j < 0 || k < 0)
            {
                printf("Impossible");
                return 0;
            }
            if(i == 0 && j == 0 || i == 0 && k == 0 || j == 0 && k == 0)
            {
                printf("Impossible");
                return 0;
            }
            num_r[0] = i;
            num_r[1] = j;
            num_r[2] = k;
            for(i = 0; i < 3; i++)
            {
                printf("%3d",num_r[i]);
                t = 1;
            }
        }
    }
    if(t != 1)
    {
        printf("Impossible");
    }

    return 0;
}

#include <stdio.h>
#include <conio.h>

int a,b,c,maxe;
int s,t,i,check;
int main()
{

    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);

    if(a>=b)
    {
        if(c>=a)
        {
            maxe=c;
            molecule(a,b,maxe);

        }
        else
            {
            maxe=a;
            molecule(b,c,maxe);
            }
    }
    else if(b>=a)
        {
            if(c>=b)
            {

            maxe=c;
        molecule(a,b,maxe);
        }
        else
        {
            maxe=b;
            molecule(a,c,maxe);
        }
           }
           return 0;
}
    molecule(int u,int v,int muxe)
    {
  check=1;
    for(i=0;i<=(muxe/2);i++)
    {

        s=u-i;
        t=v-(muxe-i);
        if(s==t)
        {
          if(i>=0&&(muxe-i)>=0&&s>=0){
          out(i,muxe-i,s);
          check=0;
          }
        }

    }
    if(check)
        printf("Impossible");
    }
   int out(int x,int y,int z)
    {

       if(a>=b)
    {
        if(c>=a)
        {
            maxe=c;
            printf("%d ",z);
            printf("%d ",y);
            printf("%d ",x);
        }
        else
            {
            maxe=a;
            printf("%d ",x);
            printf("%d ",z);
            printf("%d ",y);

            }
    }
   else if(b>=a)
           {

               if(c>=b)
            {

            maxe=c;
            printf("%d ",z);
            printf("%d ",y);
            printf("%d ",x);
        }
        else
        {
            maxe=b;
            printf("%d",x);
            printf("%d",y);
            printf("%d",z);
        }
           }
           return 0;
           }

#include<stdio.h>
int main()
{
	int a,b,c;
	scanf("%d%d%d",&a,&b,&c);
	if(a>b+c || b>c+a || c>a+b)
		printf("Impossible");
	else
		printf("%d %d %d",(a+b-c)/2,(b+c-a)/2,(a+c-b)/2);
	return 0;
}

#include <stdio.h>

int main()
{
	int a,b,c,i;
	scanf("%d %d %d",&a,&b,&c);
	for(i=0;i<=a;++i)
	{
		if(b-i==c-a+i)
		{
			printf("%d %d %d\n",i,b-i,a-i);
			return 0;
		}
	}
	printf("Impossible\n");
	return 0;
}

#include <stdio.h>
int main() {
    int a,b,c,x,m,arr[3],i,j,y;
    scanf("%d%d%d",&a,&b,&c);
    if(a>b+c||b>a+c||c>a+b){
        printf("Impossible\n");
        return 0;
    }
    arr[0]=a;arr[1]=b;arr[2]=c;
    for(i=1;i<=2;i++)
        for(j=0;j<=2-i;j++)
        {

    if(arr[j+1]<arr[j])
        {
        x=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=x;
        }
    }
    x=(arr[1]+arr[0]-arr[2]);
    y=x/2;
    //printf("%d\n",y);
    if(x%2!=0||arr[1]+arr[0]-2*y!=arr[2]){
        printf("Impossible\n");
    }
    if(arr[2]==c){
        printf("%d %d %d\n",y,arr[1]-y,arr[0]-y);
    }
    else if(arr[2]==a){
        printf("%d %d %d\n",b-y,y,c-y);
    }
    else if(arr[2]==b){
        printf("%d %d %d\n",a-y,c-y,y);
    }
    return 0;

}

#include <stdio.h>
int main(){
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);
	if(a>=b&&b>=c){
		if((b+c)<a)
			printf("Impossible\n");
		else
			printf("%d %d %d\n", c, b-c, a-c);
	}else if(a>=c&&c>=b){
		if((b+c)<a)
			printf("Impossible\n");
		else
			printf("%d %d %d\n", a-b, c-b, b);
	}else if(c>=a&&a>=b){
		if((b+a)<c)
			printf("Impossible\n");
		else
			printf("%d %d %d\n", a-b, c-b, b);
	}else if(c>=b&&b>=a){
		if((b+a)<c)
			printf("Impossible\n");
		else
			printf("%d %d %d\n", b-a, a, c-a);
	}else if(b>=a&&a>=c){
		if((c+a)<b)
			printf("Impossible\n");
		else
			printf("%d %d %d\n", c, b-c, a-c);
	}else{
		if((a+c)<b)
			printf("Impossible\n");
		else
			printf("%d %d %d\n", b-a, a, c-a);
	}
	return 0;
}

#include <stdio.h>

int main()
{
	int a,b,c,f=0,g=0,h=0,s,d;
	scanf("%d %d %d",&a,&b,&c);
	s=a+b+c;
	if (s%2==1){
		printf("Impossible");
		return 0;
	}
	f=(a+b-c);
	g=(b+c-a);
	h=(a+c-b);
	if (g%2==0 && f%2==0 && h%2==0){
		printf("%d %d %d",f/2,g/2,h/2);
	}
	else{
		printf("Impossible");
	}
	return 0;
}

/*Codeforces Round #200 (Div. 2)    B. Simple Molecules*/
#include <stdio.h>
int Max(int a[],int n);
int Min(int a[],int n);
int main()
{
    int a[4],x,y,z,i,max,min;
    for (i=1;i<=3;i++)
        scanf ("%d",&a[i]);
    max=Max(a,3);
    min=Min(a,3)-1;
    i=0;
    for (x=min/3;x<max&&i==0;x++)
    {
        y=a[2]-x;
        z=a[1]-x;
        if (z+y==a[3])
        {
            printf ("%d %d %d\n",x,y,z);
            i=1;
        }
    }
    if (i==0)
        printf ("Impossible\n");
    return 0;
}
int Max(int a[],int n)
{
    int max=a[1],i;
    for (i=2;i<=n;i++)
    {
        if (max<a[i])
            max=a[i];
    }
    return max;
}
int Min(int a[],int n)
{
    int min=a[1],i;
    for (i=2;i<=n;i++)
    {
        if (min>a[i])
            min=a[i];
    }
    return min;
}

#include<stdio.h>
int main()
{
    int a,b,c,A,B,C;
    scanf("%d %d %d", &a,&b,&c);
    if ((a==b && c!=0)||(b==c && a!=0)||(a==c && b!=0))
        printf("Impossible");
    else if (a<b+c && b<a+c && c<a+b)
        {
            for(A=1;A<=a;A++)
            {
                C=a-A;
                B=((a+b+c)/2)-(A+C);
                if(A+B+C==((a+b+c)/2) && b==A+B && c==B+C)
                    printf("%d %d %d",A,B,C);
                    break;
            }
        }
    else if (a>b+c || b>a+c || c>a+b)
        printf("Impossible");
    else if (a==b+c)
        printf("%d %d %d", b,a-(b+c),c);
    else if (b==a+c)
        printf("%d %d %d", a,c,b-(a+c));
    else if (c==a+b)
        printf("%d %d %d", c-(a+b),b,a);

}


#pragma GCC optimize("Ofast")
#include <stdio.h>

#define MAXN 5001

const int md = 998244353;

int n, m, k;
int dp[MAXN][MAXN];

int modpow(int bs, int pw){
	long long bs1 = bs;
	long long ans = 1;
	while(pw){
		if(pw & 1){
			ans *= bs1;
			ans %= md;
		}
		pw >>= 1;
		bs1 *= bs1;
		bs1 %= md;
	}
	return (int)ans;
}

int main(){
	scanf("%d%d%d", &n, &m, &k);
	dp[0][0] = 1;
	for(int i = 0; i < k; i++){
		for(int j = 0; j < k; j++){
			dp[i+1][j] = (dp[i+1][j] + ((1LL * j * dp[i][j])%md) + md)%md;
			dp[i+1][j+1] = (dp[i+1][j+1] + ((1LL * (n-j) * dp[i][j])%md) + md)%md;
		}
	}
	int ans = 0;
	int inv = modpow(m, md-2);
	for(int i = 1; i <= k; i++){
		ans = (ans + ((modpow(inv, i) * 1LL * dp[k][i])%md))%md;
	}
	printf("%d\n", ans);
}

#include <stdio.h>
#include <string.h>

#define N	5000
#define MD	998244353

long long power(int a, int k) {
	long long p;

	if (k == 0)
		return 1;
	p = power(a, k >> 1);
	p = p * p % MD;
	if (k & 1)
		p = p * a % MD;
	return p;
}

int dp[N + 1][N + 1];

void init(int k, int n) {
	int i, j;

	dp[0][0] = 1;
	for (i = 0; i < k; i++)
		for (j = 0; j < k; j++) {
			long long x = dp[i][j];

			if (x == 0)
				continue;
			dp[i + 1][j] = (dp[i + 1][j] + x * j) % MD;
			dp[i + 1][j + 1] = (dp[i + 1][j + 1] + x * (n - j)) % MD;
		}
}

int main() {
	int n, m, k, d, vm, ans;

	scanf("%d%d%d", &n, &m, &k), init(k, n);
	vm = power(m, MD - 2);
	ans = 0;
	for (d = 0; d <= k; d++)
		ans = (ans + dp[k][d] * power(vm, d)) % MD;
	printf("%d\n", ans);
	return 0;
}