1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
const int MAXN = 33;
long long t[MAXN];
bool b=0;
long long x,ans,x1;
int n;
long long f(long long h,long long w){
	int i;
	long long x=0;
	//cout<<"h="<<h<<" w="<<w<<'\n';
	for(i=n;i>=1;i--){
		if(t[i]<=min(h,w)){
			x1=w/t[i];
			x=x1*(h/t[i]);
			break;
		} 
	}
	//cout<<t[i]<<' '<<x<<'\n';
	if(x*t[i]==h*w) return x;
	else if(x==0){
		b=1;
		return -1;
	}
	else{
		if(h%t[i]>0){
			return x+f(h%t[i],w)+f(h-h%t[i],w%t[i]);	
		}
		else{
			long long xd=f(h,w%t[i]);
			//cout<<"h="<<h<<" w="<<w<<" r="<<x+xd<<'\n';
			return x+xd;
		}
		
	}
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	long long h,w;
	cin>>h>>w>>n;
	for(int i=1;i<=n;i++){
		cin>>t[i];
	}
	ans=f(h,w);
	if(b==1) cout<<-1<<'\n';
	else cout<<ans<<'\n';
	return 0;
}