#include "optimization.h"

#include <cassert>
#include <cstdio>
#include <vector>

int main() {
	// Чтение/запись с файлами, можно убрать
	assert(freopen("sum.in", "r", stdin));
	assert(freopen("sum.out", "w", stdout));

	// Числа	
	long long a = readInt<long long>(); // читает из stdin long long
	long long b = readInt(); // читает int из stdin
	writeInt(a + b); // автовывод типа числа; выводит в stdout
	writeInt(3, '\n'); // можно сразу и перевод строки вывести

	// Строки
	char s[101]; // си-шная строка длины до 100 + 1 байт под признак конца строки
	readWord(s); // читать строку; память сами выделили выше
	writeWord(s); // вывести строку
	string t = s; // сделать из си-шной строки си++ строку 
	writeWord(t.c_str()); // чтобы вывести си++ строку преобразуйте её к сишной
	writeChar('\n'); // хотите перевод строки или один символ? вот оно

	// Чтение до конца файла
	std::vector<int> nums;
	while (!seekEof()) // до конца файла
		nums.push_back(readInt());
}
/**
Если не работает ввод, прочтите:

Попробуйте Ctrl+D = символ конца файла.

В CLion и, возможно, каких-то других средах НЕ РАБОТАЕТ
буфферизированное чтение данных из консоли, 
так как там нельзя использовать символ конца файла (Ctrl+D).

Что делать? Локально у себя читать из файла, не забывать, что 
в тестирующей системе нужно читать из стандартного потока.

Сам я обычно запускаю a.exe < a.in (перенаправить a.in на вход программе). 
Можно так делать из консоли, можно настроить, чтобы среда так вам запускала.

*/