public void predictLabels(int[] heads, int[] deplbids, boolean addLoss)
	{
		assert(heads.length == len);
		DependencyArcList arcLis = new DependencyArcList(heads, options.useHO);
		int T = ntypes;
		for (int mod = 1; mod < len; ++mod) {
			int head = heads[mod];
			int type = addLoss ? 0 : 1;
			double best = getLabelScore(arcLis, heads, mod, type) +
				(addLoss && inst.deplbids[mod] != 0 ? 1.0 : 0.0);
			for (int t = type+1; t < T; ++t) {
				double va = getLabelScore(arcLis, heads, mod, t) +
					(addLoss && inst.deplbids[mod] != t ? 1.0 : 0.0);
				if (va > best) {
					best = va;
					type = t;
				}
			}
			deplbids[mod] = type;
		}
	}