#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
using namespace std;
int bfs(int sy,int sx,int n);
int d[22][22][22];
// 構造体
struct P{
  int y;
  int x;
  int c;
  P(int y,int x,int c):y(y),x(x),c(c){}
};
int dy[]={0,0,0,1,-1,-1,-1,1,1};  //    スプリンクラーの
int dx[]={0,1,-1,0,0,-1,1,-1,1};  // 　　座標
int ddy[]={-2,-2,-2,-1,0,1,2,2,2,1,0,-1};
int ddx[]={-1,0,1,2,2,2,1,0,-1,-2,-2,-2};
int main(){
  int sy,sx,y,x;
  int n;
  while(1){
    memset( d , 0 , sizeof(d) );
    cin >> sx >> sy;
    if(!sy && !sx)break;
    cin >> n;
    for(int i=0;i<n;i++){
      cin >> x >> y;
      for(int j=0;j<n;j++){
        int ty = y + dy[j];
        int tx = x + dx[j];
        if(0 <= ty && ty < 10 && 0 <= tx && tx < 10){
          d[ty][tx][i] = 1;
        }
      }
    }
    int ret = bfs( sy , sx , n);
    if(ret == n-1){
      cout << "OK" << endl;
    }else {
      cout << "NA" << endl;
    }
  }
}
int bfs(int sy,int sx,int n){
  queue<P> que;
  que.push( P(sy,sx,0) );
  
  while(!que.empty()){
    P p = que.front();que.pop();
    if(p.c == n){
      return p.c-1;
    }

    for(int i=0;i<12;i++){
      int ty = p.y + ddy[i];
      int tx = p.x + ddx[i];

      if(0<=ty && ty<10 && 0<=tx && tx<10){
        if(d[ty][tx][p.c] == 1){
          que.push( P( ty , tx , p.c + 1 ) );
        }
      }
    }
  }
  return -1;
}