// Las seis funciones misteriosas. No las cambien.
#ifndef MYSTERIES_H
#define MYSTERIES_H

#include <string>
#include <vector>

#include "work.h"

using MysteryFn = void (*)(long long n, Work& work);

// Una función y los n con que conviene medirla: first_n, 2 * first_n, ...
struct Mystery {
    std::string name;
    MysteryFn fn;
    long long first_n;
    int rows;
};

void mystery_a(long long n, Work& work);
void mystery_b(long long n, Work& work);
void mystery_c(long long n, Work& work);
void mystery_d(long long n, Work& work);
void mystery_e(long long n, Work& work);
void mystery_f(long long n, Work& work);

std::vector<Mystery> all_mysteries();

#endif
