using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static void Main() { Solve(); } static void Solve() { var start = DateTime.Now; var c = NList; var (n, k) = (c[0], c[1]); var t = NList; var u = NList; var r = new Random(); var limit = 1.8; var maxpt = 0.0; var count = 0; var res = new int[n][]; for (var i = 0; i < n; ++i) res[i] = new int[3]; while ((DateTime.Now - start).TotalSeconds < limit) { var b = new int[n]; var m = new int[n]; var e = new int[n]; for (var i = 0; i < n; ++i) { b[i] = r.Next(1, 50000000); m[i] = b[i]; e[i] = 1; } var sumt = 0.0; var sumu = 0.0; var post = new int[n]; var posu = new int[n]; for (var i = 0; i < n; ++i) { post[i] = Pos(t[i], b[i]); posu[i] = Pos(u[i], b[i]); } for (var i = 0; i < k; ++i) { var rt = 0.0; var ru = 0; for (var x = 0; x < n; ++x) for (var y = x + 1; y < n; ++y) { rt += (double)Math.Abs(post[x] - post[y]) / (b[x] + b[y]); ru = Math.Max(ru, posu[x] - posu[y]); } sumt += rt * 20000000 / n / (n - 1); sumu += 10000000 / (1 + Math.Sqrt(ru / 20.0)); } if (maxpt < sumt * sumu / n / n) { maxpt = sumt * sumu / n / n; for (var i = 0; i < n; ++i) { res[i][0] = b[i]; res[i][1] = m[i]; res[i][2] = e[i]; } } ++count; } WriteLine(string.Join("\n", res.Select(ri => string.Join(" ", ri)))); } static int Pos(int t, int b) { var p = t % (b * 4); if (p >= b && p < b * 3) return b * 2 - p; else if (p >= b * 3) return p - b * 4; return p; } }