/*
TASK:crazy
LANG:C
*/

#include <stdio.h>
#include "module.h"

#define M 1001
#define B 5000

typedef struct
{
  short x,y;
  short t,v;
  short bef[2];
}Opt;

short prime[M],pn;
short er[M][M];

Opt opt[M][M][2];

int findPrime()
{
  int i,j;
  for(i=2; i<M; i++)prime[i]=1;
  for(i=2; i<M; i++)
    if(prime[i])
      for(j=2*i; j<M; j+=i)
        prime[j]=0;
  j=0;
  /*for(i=0; i<M; i++)
    if(prime[i])
    {
      prime[j++]=i;
      prime[i]=0;
    }*/
}

int sw;
int eratosten(int x, int y)
{
  sw=x%y;
  while(sw)
  {
    x=y;
    y=sw;
    sw=x%y;
    //if(er
  }
  return y;
}

void rek(int x, int y, char z)
{
  int i,o,j;
  opt[x][y][z].v=1;
  if(prime[x]&&prime[y])
  {
    if(!z)opt[x][y][z].t=B;
    else opt[x][y][z].t=0;
    return;
  }
  if(z)o=0;
  else o=B;
  if(!prime[x])
  {
    for(i=2; i<x-1; i++)
    {
      //if(!er[x][i])eratosten[x][i];
      j=eratosten(x,i);
      if(j>1)
      {
        if(!opt[i][y+1][!z].v)rek(i,y+1,!z);
        if(z&&opt[i][y+1][!z].t>o){o=opt[i][y+1][!z].t;opt[x][y][z].bef[0]=i;opt[x][y][z].bef[1]=y+1;}
        if(!z&&opt[i][y+1][!z].t<o){o=opt[i][y+1][!z].t;opt[x][y][z].bef[0]=i;opt[x][y][z].bef[1]=y+1;}
      }
    }
  }
  if(!prime[y])
  {
    for(i=2; i<y-1; i++)
    {
      //if(!er[x][i])eratosten[x][i];
      j=eratosten(y,i);
      if(j>1)
      {
        if(!opt[x+1][i][!z].v)rek(x+1,i,!z);
        if(z&&opt[x+1][i][!z].t>o){o=opt[x+1][i][!z].t;opt[x][y][z].bef[0]=x+1;opt[x][y][z].bef[1]=i;}
        if(!z&&opt[x+1][i][!z].t<o){o=opt[x+1][i][!z].t;opt[x][y][z].bef[0]=x+1;opt[x][y][z].bef[1]=i;}
      }
    }
  }
  opt[x][y][z].t=o+1;
  //printf("opt[%d][%d][%d]=%d\n",x,y,z,opt[x][y][z].t);
}

void playOpt()
{
  long x,y;
  getnum(&x,&y);
  rek(x,y,0);
  while(1)
  {
    setnum(opt[x][y][0].bef[0],opt[x][y][0].bef[1]);
    if(prime[opt[x][y][0].bef[0]],prime[opt[x][y][0].bef[1]])return;
    getnum(&x,&y);
  }
}

int main()
{
  int  X,Y;
  //scanf("X
  findPrime();
  //rek(500,500,0);
  //printf("%d\n",opt[10][10][0].t);
  //printf("%d\n",prime[11]);
  playOpt();
  return 0;
}
