#include <cstdio>
#include <cmath>
#include <vector>
#include <algorithm>


const double PI = 3.1415926585;

using namespace std;

class UFO{
public:
	double t;
	int l;
	int r;
	int v;
	
	bool live;
	
	UFO(){
		live = true;
	}
	
	int Getl(int time){
		return l - v * time;
	}
	bool Hit(int time,double d){
		double f = asin((double)r/Getl(time));
		double upper = t + abs(f);
		double lower = t - abs(f);
		//printf("l = %d : t = %f : d = %f : f = %f : ",Getl(time),t,d,f);
		if( isnan(f) != 0){
			//printf("%f - %f :HIT\n",lower,upper);
			return true;
		}
		
		if(lower < 0){ lower = PI * 2 - lower; }
		if(upper > PI * 2){ upper = upper - PI * 2; }
		
		
		
		if(lower < upper){
			//printf("%f - %f",lower,upper);
			if(lower <= d && d <= upper){
				//printf(" : HIT \n");
				return true;
			}else{
				//printf("\n");
				return false;
			}
		}else{
			//printf(": 0 - %f || %f - 2pi",upper,lower);
			if(upper <= d || lower >= d){
				//printf(" : HIT \n");
				return true;
			}else{
				//printf("\n");
				return false;
			}
		}
	}
	bool operator==(const UFO& u){
		if(t == u.t && l == u.l && r == u.r && v == u.v){
			return true;
		}else{
			return false;
		}
	}
};

int lr;
int n;
int time;
vector<UFO> ufo;
vector<int> rems;

void remufo(){
	vector<int>::iterator rit;
	vector<UFO>::iterator it;
	UFO u;
	//printf("REM\n");
	int n = 0;
	for(rit = rems.begin();rit != rems.end();rit++){
		ufo[*rit].live = false;
		
		//u = ufo[*rit - n];
		//it = remove(ufo.begin(),ufo.end(),u);
		//ufo.erase(it,ufo.end());
		//n++;
		//printf("%d\n",*rit);
	}
	rems.clear();
}

int main(){
	int x,y;
	while(1){
		ufo.clear();
		scanf("%d %d",&lr,&n);
		if(!lr && !n){
			break;
		}
		
		
	
		for(int i=0;i<n;i++){
			UFO u;
			scanf("%d %d %d %d",&x,&y,&u.r,&u.v);
			u.t = atan2(y,x);
			if(u.t < 0){
				u.t = 2 * PI + u.t;
			}
			u.l = sqrt(x*x + y*y);
			ufo.push_back(u);
			//printf("(%d,%d) : %d : %f\n",x,y,u.l,u.t);
		}
		
		time = 1;
		vector<UFO>::iterator it;
		int ans = 0;
		int j;
		UFO min;
		while(ufo.size() != 0){
			bool ff = true;
			for(it = ufo.begin();it != ufo.end();it++){
				if(!(*it).live){ continue; }
				ff = false;
				j++;
			}
			if(ff){ break; }
			j=0;
			min = (*ufo.begin());
			min.live = false;
			for(it = ufo.begin();it != ufo.end();it++){
				if(!(*it).live){ continue; }
				
				if((*it).Getl(time) <= lr){
					//printf("%d < %d\n",(*it).Getl(time),lr);
					(*it).live = false;
					ans+=1;
				}else{
					//printf("%d > %d\n",(*it).Getl(time),lr);
					if(min.live != false || (*it).Getl(time) < min.Getl(time)){
						//printf("%d < %d : %f\n",(*it).Getl(time) , min.Getl(time) , (*it).t);
						min = *it;
					}
				}
				j++;
			}
			float f = min.t;
			j = 0;
			//printf("-->%f\n",f);
			for(it = ufo.begin();it != ufo.end();it++){
				if(!(*it).live){ continue; }
				if((*it).Hit(time,f)){
					(*it).live = false;
				}
				j++;
			}
			time++;
		}
		printf("%d\n",ans);
	}
	return 0;
}