#include <iostream>
#include <vector>
using namespace std;
struct node
{
int d,p;
};
node table[10001][10001];
int main()
{
int n,m,dis[10001],price[10001],s,e,d,c,min_l,index,sum;
bool visited[10001];
while(cin>>n>>m)
{
if(n==0 && m==0)
{
break;
}
for(int i=1;i<=n;++i)
{
dis[i]=1e9;
price[i]=0;
visited[i]=false;
}
dis[1]=0;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
table[i][j].d=1e9;
table[i][j].p=0;
}
}
for(int i=0;i<m;++i)
{
cin>>s>>e>>d>>c;
table[s][e].d=d;
table[s][e].p=c;
table[e][s].d=d;
table[e][s].p=c;
}
sum=0;
for(int i=1;i<=n;++i)
{
min_l=1e9;
index=-1;
for(int j=1;j<=n;++j)
{
if(!visited[j] && dis[j]<min_l)
{
index=j;
min_l=dis[j];
}
}
if(index==-1)
{
break;
}
visited[index]=true;
sum+=price[index];
for(int j=1;j<=n;++j)
{
if(!visited[j])
{
if(dis[index]+table[index][j].d<dis[j])
{
dis[j]=dis[index]+table[index][j].d;
price[j]=table[index][j].p;
}
else if(dis[index]+table[index][j].d==dis[j] && table[index][j].p<price[j])
{
price[j]=table[index][j].p;
}
}
}
}
cout<<sum<<endl;
}
}