/*
TASK:psort
LANG:C++
*/
#include <stdio.h>

const int MAX = 50001;

class ArrNode {
	int value;
	ArrNode* next;
	ArrNode* last;
public:
	ArrNode() 
	{
		set(-1,NULL,NULL);
	}
	void set(int value,ArrNode* last,ArrNode* next)
	{
		this->value = value;
		this->next = next;
		this->last = last;
	}
	void set_next(ArrNode* next)
	{
		this->next = next;
	}
	ArrNode* get_next()
	{
		return next;
	}
	int get_value()
	{
		return value;
	}
	ArrNode* get_last()
	{
		return last;
	}
	void set_last(ArrNode *last)
	{
		this->last = last;
	}
	void append_after(ArrNode *node)
	{
		if (node->get_last() != NULL)
			node->get_last()->set_next(node->get_next());		
		if (node->get_next() != NULL)
			node->get_next()->set_last(node->get_last());		
		if (next != NULL) {
			next->set_last(node);
			node->set_next(next);
		} else
			node->set_next(NULL);
		node->set_last(this);				
		next = node;		
	}
};

ArrNode sequence[MAX];
int length;
ArrNode* sequence_element[MAX];

void sequence_append_partial_length(int element,int cur_length)
{
	if (cur_length == 0)
		sequence[cur_length].set(element,NULL,NULL);
	if (cur_length > 0) {
		sequence[cur_length].set(element,&sequence[cur_length-1],NULL);
		sequence[cur_length-1].set_next(&sequence[cur_length]);
	}
}

void load()
{
	FILE *fin;
	
	//fin = fopen("psort.in","r");
	fin = stdin;

	fscanf(fin,"%d",&length);

	int element;
	int cur_length = 0;
	for (int i=0;i<length;i++) {
		fscanf(fin,"%d",&element);
		sequence_append_partial_length(element,cur_length);
		sequence_element[element] = &(sequence[cur_length]);
		cur_length++;
	}

	fclose(fin);
}

int solve()
{
	int result = 0;
	int element;
	ArrNode* cur;

	cur = sequence_element[length];
	if (cur != &(sequence[length])){
		sequence[length-1].append_after(cur);
		result++;
	}

	for (element=length-1;element>0;element--) {
		cur = sequence_element[element];
		//if in place
		if (cur->get_next()->get_value() == element+1) 
			continue;

		ArrNode* append_after = sequence_element[element+1]->get_last();
		append_after->append_after(cur);
		result++;		
	}

	return result;
}

void save(int result)
{
	printf("%d\n",result);
}

int main()
{
	load();
	save(solve());

	return 0;
}