#!/bin/ruby def countArray(n, x, k) array_length = n-2 if x == 1 return 0 else not_edges = x*((x-1)**(array_length-1)) edges = 2*((x-1)**(array_length-1)) ones_more = (x-1)**(array_length-2) return (not_edges-edges+ones_more)% (10**9+7) end end # def countArray(n, k, x) # array_length = n-2 # if k == array_length # answer = (1..k).inject(:*) - 2*(1..k-1).inject(:*) + (1..k-2).inject(:*) # return answer % (10**9 + 7) # elsif k < array_length # return 0 # elsif k > array_length # answer = choose(k, array_length)*(1..array_length).inject(:*) - 2*(1..array_length-1).inject(:*) + (1..array_length-2).inject(:*) # return answer % (10**9 + 7) # end # end def choose(n, k) return ((1..n).inject(:*) / ((1..k).inject(:*) * (1..n-k).inject(:*))) % (10**9 + 7) end n, k, x = gets.strip.split(' ') n = n.to_i k = k.to_i x = x.to_i answer = countArray(n, k, x) puts answer