Programa 4: Vaciando agua

Escribe un programa en C, C++ o Java que lea nueve enteros a, b, c, d, e, f, p, q, r, y que decida si existe alguna secuencia de movimientos (tal como la descrita en el problema 3.8) que tome tres jarras con capacidades a, b y c que inicialmente contienen d, e y f litros de agua para que al final contengan p, q y r litros de agua. Puedes suponer que 0 < a, b, c < 10, 0 <= d, p <= a, 0 <= e, q <= b, 0 <= f, r <= c y que d+e+f = p+q+r. Tu programa debe llamarse vag.c, vag.cpp o vag.java, debe compilar con gcc, g++ o gcj, ejecutarse en menos de 1 segundo, y no debe leer ni escribir ningún dato adicional. En el primer ejemplo mostrado abajo la primera jarra tiene capacidad 5, al principio tiene 2 litros de agua y al final debe tener 1, la segunda jarra tiene capacidad 4, al principio tiene 1 litro de agua y al final debe tener 3 y la tercera jarra tiene capacidad 3, al principio tiene 2 litros de agua y al final debe tener 1. Esto es imposible y se indica con un -1. El segundo ejemplo se puede resolver en dos movimientos: primero vaciando la primera jarra en la segunda y luego vaciando la tercera jarra en la segunda.

Ejemplos de entrada
Ejemplos de salida
5 4 3
2 1 2
1 3 1
-1
5 4 3
2 1 2
0 4 1
2
1 2
3 2