using System; using System.Linq; using System.Collections.Generic; public class Test { static int[] minValues; static int[] maxValues; static int length; static int sum; static List current = new List(); private static void Do(int index, int currentSum) { if (currentSum > sum) return; if (index == length) { if (currentSum == sum) { Output(current); } return; } for (int i = minValues[index]; i <= maxValues[index]; i++) { current.Add(i); Do(index + 1, currentSum + i); current.RemoveAt(current.Count() - 1); } } private static void Output(IEnumerable list) { foreach (var item in list) Console.Write("{0} ", item); Console.WriteLine(); } public static void Main() { var values = Console.ReadLine().Split(' '); length = int.Parse(values[0]); sum = int.Parse(values[1]); minValues = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); maxValues = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); Do(0, 0); } }