#include <assert.h>
#include <limits.h>
#include <math.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* readline();
// Complete the strangeCounter function below.
long strangeCounter(long t) {
long firs_second=3, temp;
long i;
/* Burada temp'e firs_second atamasını yapmamın nedeni döngü içinde firs_second'ın ilk değerine ihtiyacım olması */
temp = firs_second;
/*
i=1;
while(i<t)
{
temp -=1;
if(temp == 0)
{
firs_second *=2;
temp = firs_second;
}
i++;
}
*/
for(i=1; i<t; i++)
{
temp -=1;
if(temp == 0) // temp değeri her sıfır olduğunda yeni bir azalma evresine girecek.
{
firs_second *=2;
temp = firs_second;
}
}
return temp;
}
int main()
{
FILE* fptr = fopen(getenv("OUTPUT_PATH"), "w");
char* t_endptr;
char* t_str = readline();
long t = strtol(t_str, &t_endptr, 10);
if (t_endptr == t_str || *t_endptr != '\0') { exit(EXIT_FAILURE); }
long result = strangeCounter(t);
fprintf(fptr, "%ld\n", result);
fclose(fptr);
return 0;
}
char* readline() {
size_t alloc_length = 1024;
size_t data_length = 0;
char* data = malloc(alloc_length);
while (true) {
char* cursor = data + data_length;
char* line = fgets(cursor, alloc_length - data_length, stdin);
if (!line) { break; }
data_length += strlen(cursor);
if (data_length < alloc_length - 1 || data[data_length - 1] == '\n') { break; }
size_t new_length = alloc_length << 1;
data = realloc(data, new_length);
if (!data) { break; }
alloc_length = new_length;
}
if (data[data_length - 1] == '\n') {
data[data_length - 1] = '\0';
}
data = realloc(data, data_length);
return data;
}