#include <bits/stdc++.h>
using namespace std;
#define MP make_pair
#define PB push_back
#define FOR(i,a,b) for (int i=(a);i<(b);i++)
#define REP(i,n) for (int i=0;i<(n);i++)
int main() {
	int n;
	double r;
	while(cin>>r>>n&&n){
		priority_queue<pair<double,int> ,vector<pair<double,int> >,greater<pair<double,int> > > dat,tmp;
		int a,b,c;
		double d[100];
		for(int i=0;i<n;i++){
			cin>>a>>b>>c>>d[i];
			dat.push(MP(sqrt(a*a+b*b),i));
		}
		int ans=0;
//		cout<<dat.size()<<endl;
//		cout<<r<<endl;
		while(dat.size()||tmp.size()){
//			if(tmp.size()>0)cout<<"tmp "<<tmp.top().first<<endl;
//			if(dat.size()>0)cout<<"dat "<<dat.top().first<<endl;
			if((dat.size()>0&&dat.top().first<=r)||(tmp.size()>0&&tmp.top().first<=r)){
				if(dat.size()>0)dat.pop();
				if(tmp.size()>0)tmp.pop();
//				cout<<"NO"<<ans<<endl;
				ans++;
				continue;
			}
//			cout<<dat.size()<<endl;
			if(dat.size()>0){
//				cout<<"OK"<<endl;
				dat.pop();
				while(dat.size()){
					pair<double,int> h=dat.top();
					dat.pop();
					tmp.push(MP(h.first-d[h.second],h.second));
				}
			}else if(tmp.size()>0){
				tmp.pop();
				while(tmp.size()){
					pair<double,int> h=tmp.top();
					tmp.pop();
					dat.push(MP(h.first-d[h.second],h.second));
				}
			}
//			cout<<dat.size()<<" "<<tmp.size()<<" "<<ans<<endl;
		}
		cout<<ans<<endl;
	}
}