/* randline.cc
** randomize stdio on a per-line basis
**
** For some reason my C version stopped working reliably, and I don't
** feel like fixing it.  So here's a C++ version.
**
** fluffy at beesbuzz dot biz
*/

#include <iostream>
#include <vector>
#include <string>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

int main(void)
{
    std::vector<std::string> lines;

    do {
        std::string buf;
        std::getline(std::cin, buf);
        if (!std::cin.fail() && buf.size()) {
            std::string::size_type start = 0, end = 0;
            while (start < buf.size()) {
                while (start < buf.size() && (buf[start] == '\r' || buf[start] == '\n')) {
                    ++start;
                }
                end = start;
                while (end < buf.size() && buf[end] != '\r' && buf[end] != '\n') {
                    ++end;
                }
                if (start < buf.size() && start < end) {
                    lines.push_back(buf.substr(start, end - start));
                }
                start = end;
            }
        }
    } while (!std::cin.fail());
	     
    srandomdev();
    while (lines.size()) {
	int i = random() % lines.size();
	std::cout << lines[i] << std::endl;
	lines[i] = lines[lines.size() - 1];
	lines.pop_back();
    }

    return 0;
}

