vector <int> getOrdering( vector <int> height, vector <int> bloom, vector <int> wilt ) 
{
	int n = height.size();
	vector <int> res (n);
	vector <int> mark (n, 0);
	int maxi, ind;
	bool b;
	for (int i = 0; i < n; i++)
	{
		ind = maxi = -1;
		for (int j = 0; j < n; j++)
			if (!mark[j])
			{	
				b = true;
				for (int k = 0; k < n; k++)
					if (!mark[k] && height[k] < height[j] && 
						( (bloom[k] >= bloom[j] && bloom[k] <= wilt[j]) || (bloom[j] >= bloom[k] && bloom[j] <= wilt[k]) ) 
					    )
					{
						b = false;
						break;
					}
				if (b && height[j] > maxi)
				{
					maxi = height[j];
					ind = j;
				}
			}
		mark[ind] = 1;
		res[i] = maxi;
	}
	return res;
}