private boolean removeAllOnes() {
		boolean happened = false;
		
		for (final HashSet<MathsItem> hs : items) {
			
			if (hs.size() < 2)
				continue;
			
			final HashSet<MathsItem> toremove = new HashSet<MathsItem>();

			
			for (final MathsItem m : hs)
				if (m.isOne())
					toremove.add(m);
			
			if (toremove.size() == hs.size()) {
				int i = 0;
				for (final MathsItem m : toremove) {
					if (i != 0) hs.remove(m);
					i++;
				}
				
				if (i <= 1)
					continue;
			} else {
				for (final MathsItem m : toremove)
					hs.remove(m);
			}
			
			happened |= !toremove.isEmpty();
		}
		
		return happened;
	}