int abstract(int x) {
  if (x == 0) return 42;
  return abstract(x-1) + 1;
}

int as(int x) {
  if (x == 0) return 42;
  return as(x-1) + 1;
}

int assert(int x) {
  if (x == 0) return 42;
  return assert(x-1) + 1;
}

int async(int x) {
  if (x == 0) return 42;
  return async(x-1) + 1;
}

int await(int x) {
  if (x == 0) return 42;
  return await(x-1) + 1;
}

int break(int x) {
  if (x == 0) return 42;
  return break(x-1) + 1;
}

int case(int x) {
  if (x == 0) return 42;
  return case(x-1) + 1;
}

int catch(int x) {
  if (x == 0) return 42;
  return catch(x-1) + 1;
}

int class(int x) {
  if (x == 0) return 42;
  return class(x-1) + 1;
}

int const(int x) {
  if (x == 0) return 42;
  return const(x-1) + 1;
}

int continue(int x) {
  if (x == 0) return 42;
  return continue(x-1) + 1;
}

int covariant(int x) {
  if (x == 0) return 42;
  return covariant(x-1) + 1;
}

int default(int x) {
  if (x == 0) return 42;
  return default(x-1) + 1;
}

int deferred(int x) {
  if (x == 0) return 42;
  return deferred(x-1) + 1;
}

int do(int x) {
  if (x == 0) return 42;
  return do(x-1) + 1;
}

int dynamic(int x) {
  if (x == 0) return 42;
  return dynamic(x-1) + 1;
}

int else(int x) {
  if (x == 0) return 42;
  return else(x-1) + 1;
}

int enum(int x) {
  if (x == 0) return 42;
  return enum(x-1) + 1;
}

int export(int x) {
  if (x == 0) return 42;
  return export(x-1) + 1;
}

int extends(int x) {
  if (x == 0) return 42;
  return extends(x-1) + 1;
}

int extension(int x) {
  if (x == 0) return 42;
  return extension(x-1) + 1;
}

int external(int x) {
  if (x == 0) return 42;
  return external(x-1) + 1;
}

int factory(int x) {
  if (x == 0) return 42;
  return factory(x-1) + 1;
}

int false(int x) {
  if (x == 0) return 42;
  return false(x-1) + 1;
}

int final(int x) {
  if (x == 0) return 42;
  return final(x-1) + 1;
}

int finally(int x) {
  if (x == 0) return 42;
  return finally(x-1) + 1;
}

int for(int x) {
  if (x == 0) return 42;
  return for(x-1) + 1;
}

int Function(int x) {
  if (x == 0) return 42;
  return Function(x-1) + 1;
}

int get(int x) {
  if (x == 0) return 42;
  return get(x-1) + 1;
}

int hide(int x) {
  if (x == 0) return 42;
  return hide(x-1) + 1;
}

int if(int x) {
  if (x == 0) return 42;
  return if(x-1) + 1;
}

int implements(int x) {
  if (x == 0) return 42;
  return implements(x-1) + 1;
}

int import(int x) {
  if (x == 0) return 42;
  return import(x-1) + 1;
}

int in(int x) {
  if (x == 0) return 42;
  return in(x-1) + 1;
}

int inout(int x) {
  if (x == 0) return 42;
  return inout(x-1) + 1;
}

int interface(int x) {
  if (x == 0) return 42;
  return interface(x-1) + 1;
}

int is(int x) {
  if (x == 0) return 42;
  return is(x-1) + 1;
}

int late(int x) {
  if (x == 0) return 42;
  return late(x-1) + 1;
}

int library(int x) {
  if (x == 0) return 42;
  return library(x-1) + 1;
}

int mixin(int x) {
  if (x == 0) return 42;
  return mixin(x-1) + 1;
}

int native(int x) {
  if (x == 0) return 42;
  return native(x-1) + 1;
}

int new(int x) {
  if (x == 0) return 42;
  return new(x-1) + 1;
}

int null(int x) {
  if (x == 0) return 42;
  return null(x-1) + 1;
}

int of(int x) {
  if (x == 0) return 42;
  return of(x-1) + 1;
}

int on(int x) {
  if (x == 0) return 42;
  return on(x-1) + 1;
}

int operator(int x) {
  if (x == 0) return 42;
  return operator(x-1) + 1;
}

int out(int x) {
  if (x == 0) return 42;
  return out(x-1) + 1;
}

int part(int x) {
  if (x == 0) return 42;
  return part(x-1) + 1;
}

int patch(int x) {
  if (x == 0) return 42;
  return patch(x-1) + 1;
}

int required(int x) {
  if (x == 0) return 42;
  return required(x-1) + 1;
}

int rethrow(int x) {
  if (x == 0) return 42;
  return rethrow(x-1) + 1;
}

int return(int x) {
  if (x == 0) return 42;
  return return(x-1) + 1;
}

int set(int x) {
  if (x == 0) return 42;
  return set(x-1) + 1;
}

int show(int x) {
  if (x == 0) return 42;
  return show(x-1) + 1;
}

int source(int x) {
  if (x == 0) return 42;
  return source(x-1) + 1;
}

int static(int x) {
  if (x == 0) return 42;
  return static(x-1) + 1;
}

int super(int x) {
  if (x == 0) return 42;
  return super(x-1) + 1;
}

int switch(int x) {
  if (x == 0) return 42;
  return switch(x-1) + 1;
}

int sync(int x) {
  if (x == 0) return 42;
  return sync(x-1) + 1;
}

int this(int x) {
  if (x == 0) return 42;
  return this(x-1) + 1;
}

int throw(int x) {
  if (x == 0) return 42;
  return throw(x-1) + 1;
}

int true(int x) {
  if (x == 0) return 42;
  return true(x-1) + 1;
}

int try(int x) {
  if (x == 0) return 42;
  return try(x-1) + 1;
}

int typedef(int x) {
  if (x == 0) return 42;
  return typedef(x-1) + 1;
}

int var(int x) {
  if (x == 0) return 42;
  return var(x-1) + 1;
}

int void(int x) {
  if (x == 0) return 42;
  return void(x-1) + 1;
}

int while(int x) {
  if (x == 0) return 42;
  return while(x-1) + 1;
}

int with(int x) {
  if (x == 0) return 42;
  return with(x-1) + 1;
}

int yield(int x) {
  if (x == 0) return 42;
  return yield(x-1) + 1;
}
