void push(dynarray *array, element x) {
    if (array->size >= array->capacity) {
        element *new_data = malloc((9 * array->capacity / 8 + 4) * sizeof(element));
        for (int i = 0; i < array->size; i++) {
            new_data[i] = array->begin[i];
        }
        free(array->begin);
        array->begin = new_data;
        array->capacity = 9 * array->capacity / 8 + 4;
    }
    array->begin[array->size] = x;
    array->size++;
}

void free_array(dynarray *array) {
    free(array->begin);
}

element get(dynarray *tab, int i) {
    assert(i < tab->size);
    return tab->begin[i];
}