#include <set>
#include <map>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
#include <ctype.h>
#include <ctime>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <cctype>
#include <cstdlib>
#include <cstring>
#include <utility>
#include <numeric>
#include <complex>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <cassert>
#include <iostream>
#include <iterator>
#include <algorithm>

using namespace std;

//ベクトル→↑←↓
int dx[12] ={2,2,2,-2,-2,-2,1,0,-1,1,0,-1};//ぴょん吉移動方向
int dy[12] ={0,-1,1,0,-1,1,-2,-2,-2,2,2,2};
int sdx[9] = {0,1,0,-1,0,1,1,-1,-1};
int sdy[9] = {0,0,1,0,-1,-1,1,1,-1};
int s;//現在のスクリンぷらーの数
int n;//スプリンクラーの数
typedef pair<int,int> P;
vector<P> S;//スプリンクラーの位置
bool dfs(int y,int x,int s){
  if(s ==n) 
    return true;
  for(int i = 0;i <12;i++){
    int px =x +dx[i];
    int py =y +dy[i];
    if(px <0||py<0||px>9||py>9)
      continue;
    for(int j = 0;j <9;j++){
      int sx =S[s].second+sdx[j];
      int sy =S[s].first+sdy[j];
      if(sx <0||sy<0||sx>9||sy>9)
	continue;
      if(px ==sx&&py ==sy)
	if(dfs(py,px,s+1))
	   return true;
    }
  }
  return false;
}
int main()
{
  int a,b;
  int x,y;
  while(cin >>x>>y,x!=0&&y!=0){//ぴょん吉の初期位置
    cin >>n;
    S.clear();
    for(int i = 0;i < n;i++){
      cin >>a>>b;
      S.push_back(P(b,a));
    }
    cout <<(dfs(y,x,0)?"OK" :"NA")<<endl;
  }
  return 0;
}