#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES

#include <iostream>
#include <algorithm>
#include <functional>
#include <string>
#include <queue>
#include <cmath>
#include <stack>
#include <numeric>
#include <ctime>
#include <algorithm>
#include <set>
#include <stdio.h>
#include <map>

using namespace std;
typedef long long int lint;

#define INF 10000000
#define MAX 100

int solve(int n)
{
	int m;
	int cost[MAX][MAX];		// cost[i][j] は 辺ijのコスト
	int mincost[MAX];		// 集合Xからの辺の最小コスト
	bool used[MAX];			// 頂点iがXに含まれているか

	for(int i = 0; i < n; i++){
		mincost[i] = INF;
		used[i] = false;
		for(int j = 0; j < n; j++){
			cost[i][j] = INF;
		}
	}

	cin >> m;

	for(int k = 0; k < m; k++){
		int i, j, c;
		scanf("%d,%d,%d", &i, &j, &c);
		cost[i][j] = cost[j][i] = (c / 100) - 1;
	}

	mincost[0] = 0;
	int res = 0;

	while(1){
		int v = -1;
		for(int u = 0; u < n; u++){
			if(!used[u] && (v == -1 || mincost[u] < mincost[v])) v = u;
		}

		if(v == -1) break;
		used[v] = true;
		res += mincost[v];

		for(int u = 0; u < n; u++){
			mincost[u] = min(mincost[u], cost[v][u]);
		}
	}

	return res;
}

int main()
{
	while(1){
		int n;
		scanf("%d", &n);
		if(n == 0) break;
		cout << solve(n) << endl;
	}

	return 0;
}