using System;
using System.Linq;
public class Test
{
static void Main(string[] args)
{
var data = new string[]
{
"17-24 36-41 53-58 138-143 155",
"13-16 32 49-52 66-69",
"13-16 32-35 49-52 66 83 100-103"
};
split = 0;
parse = 0;
var x = data.Select(e => e.Split().Select(s => Array.ConvertAll(MySplit(s, '-'), MyParse)).SelectMany(d => Enumerable.Range(d.First(), d.Last() - d.First() + 1)));
Console.WriteLine(string.Join("\n", x.Select(y => string.Join(" ", y))));
Console.WriteLine(split);
Console.WriteLine(parse);
split = 0;
parse = 0;
x = data.Select(e => e.Split().Select(s => MySplit(s, '-').Select(MyParse)).SelectMany(d => Enumerable.Range(d.First(), d.Last() - d.First() + 1)));
Console.WriteLine(string.Join("\n", x.Select(y => string.Join(" ", y))));
Console.WriteLine(split);
Console.WriteLine(parse);
split = 0;
parse = 0;
x = data.Select(e => e.Split().Select(s => MySplit(s, '-').Select(MyParse).ToList()).SelectMany(d => Enumerable.Range(d.First(), d.Last() - d.First() + 1)));
Console.WriteLine(string.Join("\n", x.Select(y => string.Join(" ", y))));
Console.WriteLine(split);
Console.WriteLine(parse);
}
static int split = 0;
static int parse = 0;
static string[] MySplit(string s, params char[] separator)
{
split++;
return s.Split(separator);
}
static int MyParse(string s)
{
parse++;
return int.Parse(s);
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKICAgICAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICAgICAgewogICAgICAgICAgICB2YXIgZGF0YSA9IG5ldyBzdHJpbmdbXQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICIxNy0yNCAzNi00MSA1My01OCAxMzgtMTQzIDE1NSIsCiAgICAgICAgICAgICAgICAgICIxMy0xNiAzMiA0OS01MiA2Ni02OSIsCiAgICAgICAgICAgICAgICAgICIxMy0xNiAzMi0zNSA0OS01MiA2NiA4MyAxMDAtMTAzIgogICAgICAgICAgICB9OwoKICAgICAgICAgICAgc3BsaXQgPSAwOwogICAgICAgICAgICBwYXJzZSA9IDA7CiAgICAgICAgICAgIHZhciB4ID0gZGF0YS5TZWxlY3QoZSA9PiBlLlNwbGl0KCkuU2VsZWN0KHMgPT4gQXJyYXkuQ29udmVydEFsbChNeVNwbGl0KHMsICctJyksIE15UGFyc2UpKS5TZWxlY3RNYW55KGQgPT4gRW51bWVyYWJsZS5SYW5nZShkLkZpcnN0KCksIGQuTGFzdCgpIC0gZC5GaXJzdCgpICsgMSkpKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoc3RyaW5nLkpvaW4oIlxuIiwgeC5TZWxlY3QoeSA9PiBzdHJpbmcuSm9pbigiICIsIHkpKSkpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShzcGxpdCk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHBhcnNlKTsKCiAgICAgICAgICAgIHNwbGl0ID0gMDsKICAgICAgICAgICAgcGFyc2UgPSAwOwogICAgICAgICAgICB4ID0gZGF0YS5TZWxlY3QoZSA9PiBlLlNwbGl0KCkuU2VsZWN0KHMgPT4gTXlTcGxpdChzLCAnLScpLlNlbGVjdChNeVBhcnNlKSkuU2VsZWN0TWFueShkID0+IEVudW1lcmFibGUuUmFuZ2UoZC5GaXJzdCgpLCBkLkxhc3QoKSAtIGQuRmlyc3QoKSArIDEpKSk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Kb2luKCJcbiIsIHguU2VsZWN0KHkgPT4gc3RyaW5nLkpvaW4oIiAiLCB5KSkpKTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoc3BsaXQpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShwYXJzZSk7CgogICAgICAgICAgICBzcGxpdCA9IDA7CiAgICAgICAgICAgIHBhcnNlID0gMDsKICAgICAgICAgICAgeCA9IGRhdGEuU2VsZWN0KGUgPT4gZS5TcGxpdCgpLlNlbGVjdChzID0+IE15U3BsaXQocywgJy0nKS5TZWxlY3QoTXlQYXJzZSkuVG9MaXN0KCkpLlNlbGVjdE1hbnkoZCA9PiBFbnVtZXJhYmxlLlJhbmdlKGQuRmlyc3QoKSwgZC5MYXN0KCkgLSBkLkZpcnN0KCkgKyAxKSkpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShzdHJpbmcuSm9pbigiXG4iLCB4LlNlbGVjdCh5ID0+IHN0cmluZy5Kb2luKCIgIiwgeSkpKSk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKHNwbGl0KTsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUocGFyc2UpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGludCBzcGxpdCA9IDA7CiAgICAgICAgc3RhdGljIGludCBwYXJzZSA9IDA7CgogICAgICAgIHN0YXRpYyBzdHJpbmdbXSBNeVNwbGl0KHN0cmluZyBzLCBwYXJhbXMgY2hhcltdIHNlcGFyYXRvcikKICAgICAgICB7CiAgICAgICAgICAgIHNwbGl0Kys7CiAgICAgICAgICAgIHJldHVybiBzLlNwbGl0KHNlcGFyYXRvcik7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgaW50IE15UGFyc2Uoc3RyaW5nIHMpCiAgICAgICAgewogICAgICAgICAgICBwYXJzZSsrOwogICAgICAgICAgICByZXR1cm4gaW50LlBhcnNlKHMpOwogICAgICAgIH0KfQ==