#include<complex>
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<bitset>
#include<cmath>
#include<vector>
#include<map>
#include<sstream>
#include<ctime>
#include<cstdio>
#include<cstdlib>
#include<cassert>
#include<deque>
#include<queue>
#include<climits>
#include<list>
#include<stack>
#include<ctime>
#define all(n) n.begin(),n.end()
#define REP(i,s,n) for(int i=s;i<n;i++)
#define rep(i,n) REP(i,0,n)
#define insert(a,b,c,d) PP(P(a,b),P(c,d))
#define F first
#define S second
#define Iter(c) __typeof__((c).begin())
#define foreach(i,c) for(Iter(c) i = (c).begin();i != (c).end();++i)
#define pb push_back
#define INF (1<<27)
#define EPS 1e-10
#define equals(a,b) (fabs((a)-(b)) < EPS)

using namespace std;
typedef pair<int,int> P;
typedef pair<P,int> Pi;
typedef pair<P,P> PP;
typedef unsigned long long ull;
typedef long long ll;
const int dx[] = {+1,+0,-1,-2,-2,-2,+1,+0,-1,+2,+2,+2}; // frog
const int dy[] = {-2,-2,-2,+1,+0,-1,+2,+2,+2,+1,+0,-1}; // frog
const int ddx[] = {0,+0,-1,-1,-1,+0,+1,+1,+1};
const int ddy[] = {0,-1,-1,+0,+1,+1,+1,+0,-1};

//map used

void DO(deque<Pi> &deq,Pi &pi,vector<P> &vec,int number){
  map<P,bool> exist;
  P p = pi.F;
  int xxx = pi.S;  

  for(int i=0;i<9;i++)
    {
      int nx = vec[number].F + ddx[i],ny = vec[number].S + ddy[i];
      exist[P(nx,ny)] = true;
    }

  for(int i=0;i<12;i++)
    {
      int nx = p.F + dx[i],ny = p.S + dy[i];
      if(exist[P(nx,ny)])
	{
	  deq.push_front(Pi(P(nx,ny),(xxx | 1<<number)));
	}

    }


}

//17:29
int main(){

  
  //bitset<15> xd(1023);
  //cout << xd << endl;

  while(true)
    {
      int n;
      vector<P> points;
      P phoy;

      cin >> phoy.F >> phoy.S;
      if(!(phoy.F|phoy.S))break;



      cin >> n;

      rep(i,n)
	{
	  int xx,yy;
	  cin >> xx >> yy;
	  points.pb(P(xx,yy));
	}

      deque<Pi> deq;
      deq.push_front(Pi(phoy,0));

      bool fin = false;

      while(!deq.empty())
	{
	  Pi pi = deq.front(); deq.pop_front();
	  P dir = pi.F;
	  bitset<15> bit(pi.S); 
	  //cout << "now. coor (" << dir.F << "," << dir.S << ")" << endl;
	  //cout << "used : " << bit << endl;

	  if(pi.S == 1023)
	    {
	      cout << "OK" << endl;
	      fin = true;
	      break;
	    }

	  for(int i=0;i<n;i++){
	    //cout << "dir : " << dir.F << "," << dir.S << " : points["<< i << "] = " << points[i].F << "," << points[i].S << " : dif = " << abs(dir.F-points[i].F) + abs(dir.S-points[i].S) << endl; 
	    if(abs(dir.F-points[i].F)+abs(dir.S-points[i].S) > 3)
	      continue;
	    //cout << "here --- 1 : " << i << endl;

	    if((pi.S>>i & 1))
	      continue;
	    //cout << "here --- 2 : " << i << endl;

	   
	    DO(deq,pi,points,i);   
	   
	      
	         

	  }


	}

      if(!fin)
	{
	  cout << "NA" << endl;
	}

    }
return 0;
}