#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<(n);++i)
#define rep1(i,n) for(int i=1;i<=(n);++i)
#define all(c) (c).begin(),(c).end()
#define fs first
#define sc second
#define pb push_back
#define show(x) cout << #x << " " << x << endl
typedef long double D;
typedef complex<D> P;
typedef pair<P,P> L;
typedef vector<P> Pol;
D inf=1e50,eps=1e-8,EPS=1e-8;
int N,M,B;
P o[101],v[101];
D T[102];				//T[i]~T[i+1]  p=o[i]+t*v[i]
Pol pol;
D cro(P a,P b){return imag(conj(a)*b);}
D verlen(L l,P p){return cro(l.fs-l.sc,p-l.sc)/abs(l.fs-l.sc);}
bool onL(L l,P p){
	if(abs(l.fs-p)<eps) return true;
	if(abs(l.sc-p)<eps) return true;
	return abs(l.fs-l.sc)>abs(l.fs-p)&&abs(l.fs-l.sc)>abs(l.sc-p);
}
D gett(P p,P v,L l){
	if(abs(cro(l.sc-l.fs,v))<eps) return inf;
	D l0=verlen(l,p),l1=verlen(l,p+v);
	D tt=l0/(l0-l1);
	P pt=p+v*tt;
	if(onL(l,pt)) return tt;
	return inf;
}
int main(){
	while(true){
		cin>>N>>M>>B;
		if(N==0) break;
		pol.clear();
		rep(i,N){
			int x,y;
			cin>>x>>y;
			pol.pb(P(x,y));
		}
		o[0]=P(0,0);
		rep(i,M){
			int vx,vy;
			cin>>T[i+1]>>vx>>vy;
			v[i]=P(vx,vy);
			o[i+1]=o[i]+v[i]*(T[i+1]-T[i]);
		}
		rep(i,M) o[i]-=T[i]*v[i];
		T[M+1]=inf;
		v[M]=P(0,0);
		vector<D> ans;
		rep(b,B){
			D tt,x,len,vx,vy;
			cin>>tt>>x>>vx>>vy>>len;
			P vv=P(vx,vy);
			P oo=P(x,0)-tt*vv;
			D mn=inf;
			rep(i,M+1){
				rep(j,N){
					D it=gett(oo,vv-v[i],L(o[i]+pol[j],o[i]+pol[(j+1)%N]));
					if(T[i]-EPS<it&&it<T[i+1]+EPS) mn=min(mn,it);
					it=gett(oo-vv/abs(vv)*len,vv-v[i],L(o[i]+pol[j],o[i]+pol[(j+1)%N]));
					if(T[i]-EPS<it&&it<T[i+1]+EPS) mn=min(mn,it);
					it=gett(o[i]+pol[j],v[i]-vv,L(oo,oo-vv/abs(vv)*len));
					if(T[i]-EPS<it&&it<T[i+1]+EPS) mn=min(mn,it);
				}
			}
			if(mn<inf) ans.pb(mn);
		}
		sort(all(ans));
		cout<<ans.size()<<endl;
		rep(i,ans.size()) printf("%.8f\n",(double)ans[i]);
	}
}