h,w,x=map(int,input().split()) min_x=h+w-2 max_x=min_x+max((h-1)*(w//4)*2,(w-1)*(h//4)*2) max_x_option = (h//2+1)*(w//2+1) if (h//2+1)%2==0 and (h//2+1)%2==0: max_x_option-=1 max_x_option -= 1 max_x_option *= 2 #print(min_x,max_x,max_x_option) if min_x <= x <= max_x and (x-min_x)%4==0: mat=[["#"]*w for _ in range(h)] for i in range(0,h,2): for j in range(0,w,2): mat[i][j]="x" if (h-1)*(w//4)*2>(w-1)*(h//4)*2: # 上下に振りながら右に行く # 壁にぶつかるまでは下または上に行く。ぶつかったときのみ右に行く seen=[[-1]*w for _ in range(h)] seen[0][0]=0 for i in range(h): seen[i][0]=i mat[i][0]="." todo=[[i,0]] while todo: i,j=todo.pop() mat[i][j]="." if [i,j]==[h-1,w-1]:break if seen[i][j]+(h-i-1)+(w-j-1)==x: # ここからは最短距離を歩く # 右に行けるだけ右に行く while [i,j]!=[h-1,w-1]: if j+1