#include<iostream>
using namespace std;
struct node{
int value;
node *next;
};
node* head=new node;
int n,list_count=1,day_all=0,day_sub=0;
bool find_list=0;
void insert_tail(int i){
node* pointer=head;
while(pointer->next!=NULL){
pointer=pointer->next;
}
node* new_node=new node;
new_node->value=i;
new_node->next=NULL;
pointer->next=new_node;
list_count++;
}
void delete_node(int sub){
node* pointer=head;
if(sub==1){
head=head->next;
delete pointer;
if(head->value==n){
find_list=1;
}
}
else{
for(int i=1;i<sub;i++){
pointer=pointer->next;
}
cout<<pointer->value<<' '<<sub<<endl;
pointer->next=pointer->next->next;
}
list_count--;
}
int main(){
cin>>n;
head->value=1;head->next=NULL;
for(int i=2;i<=n;i++){
insert_tail(i);
}
while(list_count!=0){
int cur=list_count;
for(int i=1;i<=cur;i=i+3){
delete_node(i);
if(find_list!=1){
day_sub++;
}
}
day_all++;
}
cout<<day_all<<' '<<day_sub;
return 0;
}