using System; using System.Collections; using System.Collections.Generic; using System.Linq; using static System.Console; using static System.Math; public class Hello{ static public int mod = 1000000007; public static void Main(){ var list = new List>(); var que = new Queue(); int[] num = inta(); if(num[0] < num[1]){ WriteLine(-1); }else{ long ans = 0; for(int i=0;i()); } for(int i=0;i 0){ int pop = que.Dequeue(); for(int i=0;i=0;i--){if(binary[i] == '1'){value = value*a_power%mod;}a_power = a_power*a_power%mod;}return (int)value;} //static int square2(long a,long b,long m){var list = new List();int temp = 1;long n2 = a;list.Add(1);int count = 1;while(temp < b){list.Add((int)n2);temp*=2;count++;n2 = n2*n2%m;}long ret = 1;while(b > 0){if(temp <= b){b -= temp;ret = ret*list[count]%1000000007;}count--;temp/=2;}return(int)ret;} //各種読取 static string rstr(){ return ReadLine(); } static int rint(){ return int.Parse(ReadLine()); } static long rlong(){ return long.Parse(ReadLine()); } static string[] stra(){ return ReadLine().Split(' '); } static int[] inta(){ string[] read_str_array = ReadLine().Split(' '); int[] return_int_array = new int[read_str_array.Length]; for(int countup_i=0;countup_i 0){ temp_divide++; } return temp_divide; } static long GCD(long a,long b){ if(a < b){ long temp = a; a = b; b = temp; } if(a % b == 0){ return b; } else{ long temp = b; b = a%b; a = temp; return GCD(a,b); } } static long LCM(long a,long b){ return a * b / GCD(a,b); } }