#include <stdio.h>
#include <stdlib.h>

struct DynArray {
    double *data;
    size_t m; // total
    size_t n; // used
};

void growarray(struct DynArray *x) {
    size_t newsize = x->m * 13 / 8 + 1; // use phi aproximation 13/8
    double *newarr = realloc(x->data, newsize * sizeof *x->data);
    if (!newarr) exit(EXIT_FAILURE);
    fprintf(stderr, "INFO: realloc'ed with %d elements.\n", (int)newsize);
    x->data = newarr;
    x->m = newsize;
}

int main(void) {
    struct DynArray numbers = { 0 };
    double newnum;
    while (scanf("%lf", &newnum) == 1 && newnum != -1) {
        if (numbers.n == numbers.m) growarray(&numbers);
        numbers.data[numbers.n] = newnum;
        numbers.n++;
    }

    for (int i = numbers.n - 1; i >= 0; --i) {
        printf("%f\n", numbers.data[i]);
    }

    free(numbers.data);

    return 0;
}
