#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <cstdint>
using namespace std;
template <typename T>
static string join(const string &sep, const vector<T> &arr) {
stringstream ss;
decltype(arr.size()) i = 0;
for (const auto &el : arr) {
ss << el;
i++;
if (i < arr.size()) {
ss << sep;
}
}
return ss.str();
}
int main() {
cout << join<string>("", {}) << endl;
cout << join<string>("", {"1", "2", "3"}) << endl;
cout << join<string>(":", {"1", "2", "3"}) << endl;
cout << join<string>("vvv", {"111", "222", "333"}) << endl;
cout << join<int>(":", {1, 2, 3}) << endl;
cout << join<double>(":", {1.23, 2.23, 3.23}) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPGNzdGRpbnQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0YXRpYyBzdHJpbmcgam9pbihjb25zdCBzdHJpbmcgJnNlcCwgY29uc3QgdmVjdG9yPFQ+ICZhcnIpIHsKICAgIHN0cmluZ3N0cmVhbSBzczsKICAgIGRlY2x0eXBlKGFyci5zaXplKCkpIGkgPSAwOwoKICAgIGZvciAoY29uc3QgYXV0byAmZWwgOiBhcnIpIHsKICAgICAgICBzcyA8PCBlbDsKICAgICAgICBpKys7CiAgICAgICAgaWYgKGkgPCBhcnIuc2l6ZSgpKSB7CiAgICAgICAgICAgIHNzIDw8IHNlcDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHNzLnN0cigpOwp9CgppbnQgbWFpbigpIHsKICAgIGNvdXQgPDwgam9pbjxzdHJpbmc+KCIiLCB7fSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgam9pbjxzdHJpbmc+KCIiLCB7IjEiLCAiMiIsICIzIn0pIDw8IGVuZGw7CiAgICBjb3V0IDw8IGpvaW48c3RyaW5nPigiOiIsIHsiMSIsICIyIiwgIjMifSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgam9pbjxzdHJpbmc+KCJ2dnYiLCB7IjExMSIsICIyMjIiLCAiMzMzIn0pIDw8IGVuZGw7CiAgICBjb3V0IDw8IGpvaW48aW50PigiOiIsIHsxLCAyLCAzfSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgam9pbjxkb3VibGU+KCI6IiwgezEuMjMsIDIuMjMsIDMuMjN9KSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K