#include <cstdio>
#include <iostream>
#include <vector>
#include <list>
#include <cmath>
#include <fstream>
#include <algorithm>
#include <string>
#include <queue>
#include <set>
#include <map>
#include <complex>
#include <iterator>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <stack>

using namespace std;

const double EPS=(1e-10);
typedef long long ll;
typedef pair<int,int> pii;
typedef complex<double> P;
bool EQ(double a,double b){
  return abs((a)-(b))<EPS;
}
void fast_stream(){
  std::ios_base::sync_with_stdio(0);
}

const int MAX_V = 300;
const double INF=1000000000;
int n,m;
P troops[101];
P bases[101];
double vs[101];
// troopÆbaseÔÌÚ®Ô
double times[101][101];
// OtÌXg\»
vector<int> G[MAX_V];
// }b`OÌyA
int match[MAX_V];
// dfsÅ·ÅÉ²×½©Ç¤©ÌtO
bool used[MAX_V];

// uÆvðÔÓðOtÉÇÁ
void add_edge(int u,int v){
  G[u].push_back(v);
  G[v].push_back(u);
}

// ÁpXðdfsÅT·
bool dfs(int v){
  used[v] = true;
  for(int i = 0; i < G[v].size(); i++){
    int u = G[v][i],w = match[u];
    if(w < 0 || !used[w] && dfs(w)){
      match[v] = u;
      match[u] = v;
      return true;
    }
  }
  return false;
}

// ñOtÌÅå}b`Oðßé
int bipartite_matching(int V){
  int res = 0;
  memset(match,-1,sizeof(match));
  for(int v = 0; v < V; v++){
    if(match[v] < 0){
      memset(used,0,sizeof(used));
      if(dfs(v))res++;
    }
  }
  return res;
}

// ÔtÅðð½¹é©
bool check(double t){
  for(int i=0;i<MAX_V;i++)G[i].clear();
  for(int i=0;i<n;i++){
    for(int j=0;j<m;j++){
      // ÔÉÔÉ¤ÈçÎAÔ
      if(EQ(t,times[i][j])||t>times[i][j])
	add_edge(i,n+j);
    }
  }
  return bipartite_matching(n+m)==m;
}

int main(){

  while(cin>>n>>m&&(n|m)){
    for(int i=0;i<n;i++){
      int x,y;
      cin>>x>>y>>vs[i];
      troops[i]=P(x,y);
    }
    for(int i=0;i<m;i++){
      int x,y;
      cin>>x>>y;
      bases[i]=P(x,y);
    }
    for(int i=0;i<n;i++){
      for(int j=0;j<m;j++){
	double d=abs(troops[i]-bases[j]);
	times[i][j]=d/vs[i];
      }
    }
    double ub=INF;
    double lb=0;
    int cnt=100;
    while(cnt--){
      double mid=(ub+lb)/2;
      if(check(mid))ub=mid;
      else lb=mid;
    }
    printf("%.10f\n",ub);
  }

  return 0;
}