#include #include #include #include using std::cin; using std::cout; const char endl = '\n'; int main() { std::ios::sync_with_stdio(false); cin.tie(nullptr); int n; std::vector a; std::vector> ans; cin >> n; for (int i = 1, x; i <= n * (n - 1) / 2; i++) { cin >> x; a.emplace_back(x); } std::sort(a.begin(), a.end()); for (int i = a[0] >> 1; i; i--) { int b = a[0] - i, c = a[1] - i; if (*std::lower_bound(a.begin(), a.end(), b + c) != b + c) continue; std::vector v; std::unordered_map map; for (int x : a) map[x]++; v.emplace_back(i); map[i + b]--; v.emplace_back(b); map[i + c]--; v.emplace_back(c); map[b + c]--; bool flag = false; for (int j = 2; j < a.size() && !flag; j++) { if (!map[a[j]]) continue; for (int x : v) { if (!map.count(x + a[j] - i) || !map[x + a[j] - i]) { flag = true; break; } map[x + a[j] - i]--; } v.emplace_back(a[j] - i); } if (!flag) ans.emplace_back(v); } cout << ans.size() << endl; std::sort(ans.begin(), ans.end(), std::greater<>()); for (auto item : ans) { for (int x : item) { cout << x << ' '; } cout << endl; } return 0; }