#include<iostream>
#include<math.h>

#define PI 3.141592653589793

using namespace std;

struct tagUFO{
	tagUFO*pBefore;
	tagUFO*pNext;
	double x;//??§?¨?x
	double y;//??§?¨?y
	int r;//UFO?????????
	int v;//UFO?????????(??????)
	double Distance;
};

int AddUFO(tagUFO*p);
tagUFO*DeleteUFO(tagUFO*pDelete);
int ShotUFO(tagUFO*pAimedUFO, tagUFO*pShotUFO, int R);

tagUFO*pFirst = NULL;
tagUFO*pLast = NULL;

int main() {
	while (true) {
		int R;//??¬?????¶???????¨???????????????????????????????
		int N;//UFO?????°
		tagUFO*p;
		int InvadingUFO = 0;

		cin >> R >> N;
		if (R == 0 && N == 0)break;//0 0?????\?????????????????????

		for (int i = 0; i < N; i++) {
			p = new tagUFO;
			cin >> p->x >> p->y >> p->r >> p->v;
			p->Distance = sqrt(p->x*p->x + p->y*p->y);
			//??????????????§??????R??????UFO?????????
			if (p->Distance < R) {
				InvadingUFO++;
				delete p;
			}
			else
				AddUFO(p);
		}

		p = pFirst;

		while (p!=NULL) {
			//UFO?????§?¨????1???????????´??°
			while (p != NULL) {
				p->x -= p->x*p->v / p->Distance;
				p->y -= p->y*p->v / p->Distance;
				p->Distance = sqrt(p->x*p->x + p->y*p->y);

				p = p->pNext;
			}

			//??????R??????UFO?????????
			p = pFirst;
			while (p != NULL) {
				if (p->Distance < R) {
					InvadingUFO++;
					p = DeleteUFO(p);
				}
				else
					p = p->pNext;
			}

			//UFO???????¢?
			p = pFirst;
			double Nearest = p->Distance;
			p = p->pNext;
			while (p != NULL) {
				if (p->Distance < Nearest)
					Nearest = p->Distance;

				p = p->pNext;
			}
			p = pFirst;
			while (p != NULL) {
				if (p->Distance == Nearest) {
					tagUFO tmp = *p;
					p = pFirst;
					while (p != 0) {
						if (ShotUFO(&tmp, p, R)) {
							p = DeleteUFO(p);
						}
						else {
							p = p->pNext;
						}
					}
					break;
				}
				p = p->pNext;
			}
			p = pFirst;
		}
		tagUFO*pNext = pFirst;
		while (pNext) {
			p = pNext;
			pNext = p->pNext;
			delete p;
		}
		pFirst = pLast = NULL;

		//??????????????????R???????????\??????UFO?????°?????????
		cout << InvadingUFO << endl;
	}

	return 0;
}

int AddUFO(tagUFO*pAdd) {
	if (!pFirst)
		pFirst = pAdd;
	if (pLast)
		pLast->pNext = pAdd;
	pAdd->pBefore = pLast;
	pAdd->pNext = NULL;
	pLast = pAdd;
	return 0;
}

tagUFO*DeleteUFO(tagUFO*pDelete) {
	tagUFO*pReturn = pDelete->pNext;
	if (pDelete->pBefore)
		pDelete->pBefore->pNext = pReturn;
	else
		pFirst = pReturn;
	if (pReturn)
		pReturn->pBefore = pDelete->pBefore;
	else
		pLast = pDelete->pBefore;
	delete pDelete;
	return pReturn;
}

int ShotUFO(tagUFO*pAimedUFO,tagUFO*pShotUFO,int R) {
	double AimedUFOAngle = atan(pAimedUFO->y / pAimedUFO->x);
	if (pAimedUFO->x < 0) {
		AimedUFOAngle += PI;
	}
	else if (pAimedUFO->y < 0) {
		AimedUFOAngle += 2 * PI;
	}

	double ShotUFOCenterAngle = atan(pShotUFO->y / pShotUFO->x);
	if (pShotUFO->x < 0) {
		ShotUFOCenterAngle += PI;
	}
	else if (pShotUFO->y < 0) {
		ShotUFOCenterAngle += 2 * PI;
	}

	double ShotUFORangeAngle;
	if ((pShotUFO->Distance*pShotUFO->Distance - pShotUFO->r*pShotUFO->r) > R*R) {
		ShotUFORangeAngle = asin(pShotUFO->r / pShotUFO->Distance);
	}
	else if (pShotUFO->Distance + R>pShotUFO->r) {
		ShotUFORangeAngle = acos((pShotUFO->r*pShotUFO->r + R*R - pShotUFO->Distance*pShotUFO->Distance) / (2 * pShotUFO->r*R));
	}
	else {
		return 1;
	}

	if (ShotUFOCenterAngle - ShotUFORangeAngle <= AimedUFOAngle&&AimedUFOAngle <= ShotUFOCenterAngle + ShotUFORangeAngle)
		return 1;
	else if (ShotUFOCenterAngle - ShotUFORangeAngle + PI <= AimedUFOAngle&&AimedUFOAngle <= ShotUFOCenterAngle + ShotUFORangeAngle + PI)
		return 1;
	else if (ShotUFOCenterAngle - ShotUFORangeAngle <= AimedUFOAngle + PI&&AimedUFOAngle + PI <= ShotUFOCenterAngle + ShotUFORangeAngle)
		return 1;
	else
		return 0;
}