#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
typedef struct P{  
  int x,y,c;
  P(){}
  P(int x,int y,int c):x(x),y(y),c(c){}
};
int dx[12]={-1,0,1,2,2,2,1,0,-1,-2,-2,-2};
int dy[12]={-2,-2,-2,-1,0,1,2,2,2,1,0,-1};
int sx[9]={-1,0,1,-1,0,1,-1,0,1};
int sy[9]={-1,-1,-1,0,0,0,1,1,1};
bool sp[15][15][15];
bool used[15][15][15];
int n;
int xs,ys;
int main(void){
  while(1){
    scanf("%d %d",&xs,&ys);
    if(!xs && !ys) break;
    memset(sp,false,sizeof(sp));
    scanf("%d",&n);
    for(int i=0;i<n;i++){
      int tx,ty;
      scanf("%d %d",&tx,&ty);
      for(int j=0;j<9;j++){
	int nx=tx+sx[j];
	int ny=ty+sy[j];
	if(0<nx && nx<10 && 0<=ny && ny<10) sp[i][nx][ny]=true;
      }
    }

    memset(used,true,sizeof(used));
    bool f=false;
    queue<P> que;
    que.push(P(xs,ys,0));
    while(!que.empty()){
      P p=que.front();
      que.pop();
      if(p.c>=n){
	f=true;
	break;
      }
      for(int i=0;i<12;i++){
	int nx=p.x+dx[i];
	int ny=p.y+dy[i];
	if(0<=nx && nx<10 && 0<=ny && ny<10){
	  if(sp[p.c][nx][ny] && used[p.c][nx][ny]){
	    used[p.c][nx][ny]=false;
	    que.push(P(nx,ny,p.c+1));
	  }
	} 
      }
    }
    if(f) puts("OK");
    else puts("NA");
  }
}