@Override
	public void run() {

		/* Todos los resultados posibles de X*10^r sin repetir
		 * Ejemplo: 1 dado, 2 caras, 2 bandejas:
		 * 			[0, 1, 2, 20, 21]
		 */

		if(trays == 1){
			resultado = diceNumber * faces + 1;			
		}else{

			Set<Integer> lcombinaciones = new HashSet<Integer>();
			for(int tray = 0; tray<trays; tray++){
				for(int face = 0; face<=faces; face++){
					lcombinaciones.add(ponderacion(face, tray));
				}
			}


			Set<Integer> lcomb = new HashSet<Integer>();
			lcomb.addAll(lcombinaciones);

			/* Combinaciones posibles de todos los dados
			 * X*10^r + X*10^r + X*10^r ....
			 */
			for(int i = 1; i < diceNumber; i++){
				Set<Integer> aux = new HashSet<Integer>();
				for(Integer num1: lcombinaciones){
					for(Integer num2: lcomb){
						aux.add(num1 + num2);
					}
				}
				lcomb.addAll(aux);
			}

			/* Comprobar que entero i falta en el conjunto que contiene todas las combinaciones
		   posibles de todos los dados.
			 */
			for(int i = 0; i<lcomb.size(); i++){
				if(!lcomb.contains(i)){
					resultado = i;
					break;
				}
			}

		}

	}