using System;
using System.Linq;
using System.Collections.Generic;
namespace Atcoder20190616
{
class ProgramA
{
static void Main(string args)
{
//日付を入力する
int h = int.Parse(Console.ReadLine());
int w = int.Parse(Console.ReadLine());
int n = int.Parse(Console.ReadLine());
//hとwの大小を比較して、おおきい方で塗っていく。割り切れるときと割り切れないときで回数が違うので場合分け
if(h > w)
{
if(n % h == 0)
Console.WriteLine(n / h);
else
Console.WriteLine(n / h + 1);
}
else
{
if(n % w == 0)
Console.WriteLine(n / w);
else
Console.WriteLine(n / w + 1);
}
}
}
class ProgramB
{
static void Main(string args)
{
//入力
int n = int.Parse(Console.ReadLine());
int pos = new int[n];
int l = new int[n];
List<Task> task= new List<Task>();
//値を代入する
for(int i = 0;i < n;i++)
{
string input = Console.ReadLine().Split(' ');
pos[i] = int.Parse(input[0]);
l[i] = int.Parse(input[1]);
task.Add(new Task(pos[i], l[i]));
}
//ソートする
IOrderedEnumerable<Task> sorted = task.OrderBy(x => x.a);
//それぞれ並び替え後に代入しなおす
int z = 0;
foreach(Task s in sorted)
{
pos[z] = s.a;
l[z] = s.order;
z++;
}
//貪欲法で取り除くか検討する
int temp = 0;
int temp2 = pos[0] + l[0];
int k = 0;
int count = 0;
//ロボットの一番おおきい座標と次に追加するロボットの最小値を比較して判断
for(int i = 1;i < n;i++)
{
temp = pos[i] - l[i];
if(temp < temp2)//もし被っているならロボットを取り除く
{
count++;
if(temp2 >= pos[i] + l[i])//追加したロボットの方が占有する座標が小さいときはロボットの最大座標を更新する
{
temp2 = pos[i] + l[i];
}
}
else//被らないなら追加ロボットの最大座標で更新
{
temp2 = pos[i] + l[i];
}
}
//答は取り除いたロボットを引く
Console.WriteLine(n - count);
}
}
//2つの数値を連動させて記録するためのTaskクラス
public class Task
{
public int order;
public int a;
public Task(int a, int order)
{
this.a = a;
this.order = order;
}
}
class ProgramC
{
static void Main(string args)
{
//入力
string[] input = Console.ReadLine().Split(' ');
int n = int.Parse(input[0]);
int k = int.Parse(input[1]);
int s = int.Parse(input[2]);
//s = 1000000000以外ならkこsでそれ以外はs+1, s =1000000000ならkこsでそれ以外は1
for(int i = 0;i < n;i++)
{
if(s == 1000000000)
{
if(i < k)
Console.Write(s);
else
Console.Write('1');
}
else
{
if(i < k)
Console.Write(s);
else
Console.Write(s+1);
}
Console.Write(' ');
}
}
}
}