#ifndef FWDLIB_HPP #define FWDLIB_HPP #include <string> #include <optional> #include <iostream> #include <functional> #include <unordered_map> #include <unordered_set> using namespace std; static void fwd_getline(auto next) { if (cin.eof()) return next(optional<string>{}); if (string line; getline(cin, line)) return next(optional<string>{line}); else return next(optional<string>{}); } static void fwd_foreach(auto container, auto next) { for (auto &n : container) next(n); } static void fwd_some(auto option, auto ok, auto fail) { if (option) return ok(std::move(option.value())); else return fail(); } static void fwd_insert(auto container, auto elem, auto next) { container.insert(std::move(elem)); return next(std::move(container)); } static void fwd_println(auto elem) { cout << elem << endl; } #endif /* FWDLIB_HPP */