#include<iostream>
#include<vector>
#include<cmath>
#include<complex>
#include<utility>
using namespace std;
#define rep(i,n) for(int i=0;i<n;i++)
#define pb push_back
#define mp make_pair
typedef complex<double> P;

const double EPS=1e-10;

struct C { P p; double r; C(const P& p, double r) : p(p), r(r) {} C(){} };
double distanceLP(const pair<P,P> &l, const P& p) {
	P p1=l.first,p2=l.second;
	double a=p2.imag()-p1.imag(), b=p1.real()-p2.real();
	double c=p1.imag()*p2.real()-p1.real()*p2.imag();
	return abs(a*p.real()+b*p.imag()+c)/sqrt(a*a+b*b);
}
pair<P, P> tangentpoints(P p, P c, double r) {
	double d2 = norm(p-c);
	double x = sqrt(d2-r*r);
	if(x<EPS) return mp(p+(c-p)*P(0, 1), p-(c-p)*P(0, 1));
	P h(c+(p-c)*r*r/d2), w((p-c)*P(0, 1)*x*r/d2);
	return mp(h+w, h-w);
}
vector<pair<P,P> > commonTangentLines(const C &c1,const C &c2)
{
	vector<pair<P,P> > ret;
	P dir=c2.p-c1.p;
	if(abs(abs(dir)-c1.r-c2.r)<EPS)//ñ~ªÚ·é
	{
		P id=(c1.p*c2.r+c2.p*c1.r)/(c1.r+c2.r);
		ret.pb(mp(id,id+dir*P(0,1))); ret.pb(mp(id,id-dir*P(0,1)));
	}
	if(c1.r+c2.r<abs(dir)+EPS)//£êÄ¢éiàÚüj
	{
		P id=(c1.p*c2.r+c2.p*c1.r)/(c1.r+c2.r);
		pair<P,P> TP=tangentpoints(id,c1.p,c1.r);
		ret.pb(mp(TP.first,id)); ret.pb(mp(TP.second,id));
	}
	if(abs(c1.r-c2.r)<EPS)//¼a¯¶
	{
		P normal=dir*P(0,1)/abs(dir);
		ret.pb(mp(c1.p+normal*c1.r,c2.p+normal*c2.r));
		ret.pb(mp(c1.p-normal*c1.r,c2.p-normal*c2.r));
	}
	else//¼aá¤iOÚüj
	{
		P od=c1.p+dir*c1.r/(c1.r-c2.r);
		pair<P,P> TP=tangentpoints(od,c1.p,c1.r);
		ret.pb(mp(TP.first,od)); ret.pb(mp(TP.second,od));
	}
	return ret;
}

int n;
C C[100];

int main()
{
	while(cin>>n,n)
	{
		rep(i,n)
		{
			int x,y,r,m; cin>>x>>y>>r>>m;
			C[i*2].p=C[i*2+1].p=P(x,y);
			C[i*2].r=r; C[i*2+1].r=r+m;
		}
		int ans=1;
		rep(i,2*n)rep(j,2*n)
		{
			vector<pair<P,P> > CTL=commonTangentLines(C[i],C[j]);
			rep(k,CTL.size())
			{
				int cnt=0;
				rep(l,2*n)
				{
					if(l%2==0&&distanceLP(CTL[k],C[l].p)+EPS<C[l].r)cnt--;
					if(l%2==1&&distanceLP(CTL[k],C[l].p)<C[l].r+EPS)cnt++;
				}
				ans=max(ans,cnt);
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}