#include <bits/stdc++.h>
using namespace std;
using vi=vector<int>;
using vvi=vector<vi>;
using vs=vector<string>;
using msi=map<string,int>;
using mii=map<int,int>;
using pii=pair<int,int>;
using vlai=valarray<int>;
using ll=long long;
#define rep(i,n) for(int i=0;i<n;i++)
#define range(i,s,n) for(int i=s;i<n;i++)
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define as first
#define va second
class Eratosthenes{
  public:
    int n;
    vector<bool> prime;
    Eratosthenes(int N):n(N+1){
        prime=vector<bool>(n,1); prime[0]=prime[1]=0;
        for(int i=2;i*i<=n;i++) if(prime[i]) for(int j=i*i;j<=n;j+=i) prime[j]=0;}
    vector<int> primeArray(int s=0, int l=10000){vi ret; for(int i=s;ret.size()!=l;i++) if(prime[i]) ret.push_back(i); return ret;}
};
// 13,947 9,821
int main(){
    Eratosthenes e(1000000);
    vvi v(1000,vi(1000,0));
    {
        int y=500,x=499,sight=0;
        vvi vec={{0,1},{-1,0},{0,-1},{1,0}};
        for(int dist=2, num=1; num<=1000000 ; dist++){
            for(int i=0;i<dist/2;i++){
                v[y][x]=num++;
                y+=vec[sight][0];
                x+=vec[sight][1];
            }
            sight=(sight+1)%4;
        }
    }
    int m,n;
    while(cin>>m>>n,m){
        vector<vector<pii>> ana(1000,vector<pii>(1000,make_pair(0,0)));
        for(int y=999;1;y--){
            for(int x=0;x<1000;x++){
                if(e.prime[v[y][x]]){
                    ana[y][x].as++;
                    if(ana[y][x].va==0){
                        ana[y][x].va=v[y][x];
                    }
                }
                if(v[y][x]==n){
                    cout<<ana[y][x].as<<" "<<ana[y][x].va<<endl;
                    goto fin;
                }
            }
            //int is=false;
            for(int x=0;x<1000;x++){
                if(v[y][x]-1>m) continue;
                //cout<<setw(3)<<v[y][x]<<" ";is=true;
                int mind=-2,val=-1, pval=-1;
                for(auto i : {-1,0,1}){ //[y-1][x]????????????????????????[y][x+i]?????????
                    if(x+i>=0 && x+i<1000 && v[y][x+i]<=m &&  (val<ana[y][x+i].as || (val==ana[y][x+i].as && pval<ana[y][x+i].va) )){
                        mind=i;
                        val=ana[y][x+i].as;
                        pval=ana[y][x+i].va;
                    }
                }
                ana[y-1][x]=make_pair(val,pval);
            }
            //if(is)cout<<endl;
        }
        fin:
        ;
    }
}