/*
TASK: PHROPE
LANG: C++
*/

#include <stdio.h>

const int K = 5634;
const int LOSS = -((1<<30)+643);
const int MAX = 100;

int A[MAX][MAX];
int lamp;

int solve (int a, int b)
{
   if (A[a][b]) return A[a][b];
   if ((a<=1 && b<=1)||(a*b==0)) return (A[a][b]=LOSS);

   int i;
   
   for (i=1; (i<=a/2)&&(i<=b); i++)
      if (solve(a-i*2, b-i) == LOSS) {
         lamp = 0;
         return (A[a][b]=b-i);
      }

   for (i=1; (i<=b/2)&&(i<=a); i++)
      if (solve(a-i, b-2*i) == LOSS) {
         lamp = 1;
         return (A[a][b]=a-i);
      }

   return (A[a][b]=LOSS);
}

int main ()
{
   //freopen ("out.txt", "w", stdout);

   int p, i, j;

   scanf ("%d%d", &i, &j);

//   for (i=1; i<=10; i++) {
//      for (j=1; j<=10; j++) {
//         printf ("%d %d -> ", i, j);
         p = solve (i,j);
         if (p==LOSS) printf ("0 0\n");
         else {
            if (lamp) printf ("%d %d\n", i-p, 2*(i-p));
            else printf ("%d %d\n", 2*(j-p), j-p);
         }
//      }
//      printf ("\n");
//   }

   return 0;
}
