#割り算が計算に入るのでそれを排除しようと試行錯誤中
def f(e,a,b)
	if e-a<=0
		return 0
	else
		return (e-a)/b+((e-a)%b>0?1:0)
	end
end
 
def f2(d,m)
	r=10
	res=1
	while d>0 do
 		if d%2==1
 			res=(res*r)%m
 		end
		r=(r*r)%m
 		d/=2
	end
	return res
end
 
def f3(r0,p0,m)
	r1=1
	t1=1
	res=0
	r2=1
	while r0>0
		if r0%2==1
			res=(res+t1*r2)%m
		end
		if r1==1
			r1=p0%m
		else
			r1=(r1*r1)%m
		end
		if r0%2==1
			r2=(r2*r1)%m
		end
		t1=(t1*(r1+1))%m
		r0/=2
	end
	return res
end
 
def f3b(r0,p0,m,base)
	r1=1
	res=0
	t1=1
	k=r0
	d=1
	r2=1
	r3=1
	while r0>0 do
		if r0%2==1
				k=k-r1
				res=(res+t1*r3+(k+base)*f3(r1,p0,m)*r3)%m
		end
 
		if r2==1
			r2=p0
		else
			r2=(r2*r2)%m
		end
		if r0%2==1
			r3=(r3*r2)%m
		end
		
		t1=(t1*(1+r2)+r1*f3(r1,p0,m))%m
		r1=r1*2
		r0/=2
	end
	return res%m
end
 
def f4(l,a,b,m)

#str=""
#l.times{|i|
#	str=str + (a+b*i).to_s
#}
#ansA=((str.to_i)%m)
 
 
 
rs=(0..50).map{|e| 10**e}
ts=rs.map{|e| f(e,a,b)}.select{|e| e<=l}
ts<<l
ra=1
suma=0
suma2=0
suma3=0
sumb=0
sumb2=0
sumc2=0
mr2=1
rk=1
base=l
ts.size.times{|i|
	p1=ts.size-1-i
	p2=p1-1
	if(p2>=0 && ts[p1]>ts[p2])
		p3=rs[p1]
		t3=ts[p1]-ts[p2]-1
		t4=t3+1
		base=base-t4
	
			q0=f2(p1*(t4+1),m)
			q1=f2(p1*t4,m)
			q2=f2(p1,m)
			q3=(q2+(m-1))%m
			s10=f3(t4,q2,m)%m
			t10=f3b(t4,q2,m,base-1)%m
			t11=(s10*(ts[p2]-1))%m
			suma2=((suma2+mr2*s10))%m
			sumb2=((sumb2+mr2*t10))%m
			sumc2=(sumc2+(t4*p1))
			mr2=f2(sumc2,m)%m
	end
}
 
p ((a*suma2+b*sumb2)%m)
#ansB=((a*suma2+b*sumb2)%m)
#print (ansB-ansA).to_s
end
 
ds=gets.split(" ").map{|e| e.to_i}
l=ds[0]
a=ds[1]
b=ds[2]
m=ds[3]
 
#(1..20).each{|e|
#		p ["ans",e,f3b(e,100,m*m*m,3)]
#}
 
f4(l,a,b,m)
 
#(6..13).each{|l|
#  (13..22).each{|a|
#		[13,18,25,57,89].each{|b|
#			#p [l,a,b]
#			f4(l,a,b,m)
#		}
#		
#	}
#}