#include<iostream>
#include<queue>
using namespace std;

struct Pos{int x,y,time;};

int park[10][10];

int px,py;
int n;
int sx,sy;

int dpx[12]={-1,0,1,2,2,2,1,0,-1,-2,-2,-2};
int dpy[12]={-2,-2,-2,-1,0,1,2,2,2,1,0,-1};
int pn=12;
int dsx[8]={-1,0,1,1,1,0,-1,-1};
int dsy[8]={-1,-1,-1,0,1,1,1,0};
int sn=8;

bool check(int x,int y){
  return 0<=x && x<10 && 0<=y && y<10;
}

string bfs(){
  queue<Pos>q;
  Pos now={px,py,0},next;
  q.push(now);
  while(!q.empty()){
    now=q.front();
    q.pop();
    if(now.time==n)return "OK";
    for(int i=0;i<pn;i++){
      next=now;
      next.x+=dpx[i];
      next.y+=dpy[i];
      next.time++;
      if(!check(next.x,next.y))continue;
      for(int j=0;j<sn;j++){
	int x=next.x+dsx[j];
	int y=next.y+dsy[j];
	if(!check(x,y))continue;
	if(park[x][y]==next.time)q.push(next);
      }
    }
  }

  return "NA";
}

int main()
{
  while(cin>>px>>py,px|py){
    for(int i=0;i<10;i++)for(int j=0;j<10;j++)park[i][j]=0;
    cin>>n;
    for(int i=1;i<=n;i++){
      cin>>sx>>sy;
      park[sx][sy]=i;
    }
    cout<<bfs()<<endl;
  }
}