#include <iostream>
#include <vector>
#define SIZE 1000
#define INF 1000
using namespace std;
vector<pair<int,int>>G[SIZE];
int dp[SIZE][SIZE];
bool checker_place[SIZE][SIZE];
int number_of_vertex,number_of_edge,number_of_new_way;
void floydWarshall(int n){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(!checker_place[i][j]){
dp[i][j]=INF;
}
}
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
}
}
}
}
void addToGraph(int x,int y,int z){
G[x].push_back({y,z});
G[y].push_back({x,z});
dp[x][y]=z;
dp[y][x]=z;
//changeDp
for(int i=1;i<=number_of_vertex;i++){
for(int j=1;j<=number_of_vertex;j++){
dp[i][j]=min(dp[i][j],dp[i][x]+dp[x][y]+dp[y][j]);
}
}
}
int currentFloyd(int x,int y,int z){
//1->(x-y)->n
int result=0;
result+=dp[1][x];
result+=z;
result+=dp[y][number_of_vertex];
return result;
}
void checkNewWay(int x,int y,int z){
int current_dist=dp[1][number_of_vertex];
int new_distance=currentFloyd(x,y,z);
if(new_distance<=current_dist){
cout<<"1"<<endl;
addToGraph(x,y,z);
}else{
new_distance= currentFloyd(y,x,z);
if(new_distance<=current_dist){
cout<<1<<endl;
addToGraph(y,x,z);
}else{
cout<<"0"<<endl;
}
}
}
int main(){
cin>>number_of_vertex>>number_of_edge>>number_of_new_way;
for(int i=0;i<number_of_edge;i++){
int x,y,z;
cin>>x>>y>>z;
G[x].push_back({y,z});
G[y].push_back({x,z});
dp[x][y]=z;
dp[y][x]=z;
checker_place[x][y]=true;
checker_place[y][x]=true;
}
floydWarshall(number_of_vertex);
for(int i=0;i<number_of_new_way;i++){
int x,y,z;
cin>>x>>y>>z;
checkNewWay(x,y,z);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojZGVmaW5lIFNJWkUgMTAwMAojZGVmaW5lIElORiAxMDAwCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnZlY3RvcjxwYWlyPGludCxpbnQ+PkdbU0laRV07CmludCBkcFtTSVpFXVtTSVpFXTsKYm9vbCBjaGVja2VyX3BsYWNlW1NJWkVdW1NJWkVdOwppbnQgbnVtYmVyX29mX3ZlcnRleCxudW1iZXJfb2ZfZWRnZSxudW1iZXJfb2ZfbmV3X3dheTsKdm9pZCBmbG95ZFdhcnNoYWxsKGludCBuKXsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQlmb3IoaW50IGo9MTtqPD1uO2orKyl7CgkJCWlmKCFjaGVja2VyX3BsYWNlW2ldW2pdKXsKCQkJCWRwW2ldW2pdPUlORjsKCQkJfQoJCX0KCX0KCWZvcihpbnQgaz0xO2s8PW47aysrKXsKCQlmb3IoaW50IGk9MTtpPD1uO2krKyl7CgkJCWZvcihpbnQgaj0xO2o8PW47aisrKXsKCQkJCWRwW2ldW2pdPW1pbihkcFtpXVtqXSxkcFtpXVtrXStkcFtrXVtqXSk7CgkJCX0KCQl9Cgl9Cn0Kdm9pZCBhZGRUb0dyYXBoKGludCB4LGludCB5LGludCB6KXsKCUdbeF0ucHVzaF9iYWNrKHt5LHp9KTsKCUdbeV0ucHVzaF9iYWNrKHt4LHp9KTsKCWRwW3hdW3ldPXo7CglkcFt5XVt4XT16OwoJLy9jaGFuZ2VEcAoJZm9yKGludCBpPTE7aTw9bnVtYmVyX29mX3ZlcnRleDtpKyspewoJCWZvcihpbnQgaj0xO2o8PW51bWJlcl9vZl92ZXJ0ZXg7aisrKXsKCQkJZHBbaV1bal09bWluKGRwW2ldW2pdLGRwW2ldW3hdK2RwW3hdW3ldK2RwW3ldW2pdKTsKCQl9Cgl9Cn0KaW50IGN1cnJlbnRGbG95ZChpbnQgeCxpbnQgeSxpbnQgeil7CgkvLzEtPih4LXkpLT5uCglpbnQgcmVzdWx0PTA7CglyZXN1bHQrPWRwWzFdW3hdOwoJcmVzdWx0Kz16OwoJcmVzdWx0Kz1kcFt5XVtudW1iZXJfb2ZfdmVydGV4XTsKCXJldHVybiByZXN1bHQ7Cn0Kdm9pZCBjaGVja05ld1dheShpbnQgeCxpbnQgeSxpbnQgeil7CglpbnQgY3VycmVudF9kaXN0PWRwWzFdW251bWJlcl9vZl92ZXJ0ZXhdOwoJaW50IG5ld19kaXN0YW5jZT1jdXJyZW50RmxveWQoeCx5LHopOwoJaWYobmV3X2Rpc3RhbmNlPD1jdXJyZW50X2Rpc3QpewoJCWNvdXQ8PCIxIjw8ZW5kbDsKCQlhZGRUb0dyYXBoKHgseSx6KTsKCX1lbHNlewoJCW5ld19kaXN0YW5jZT0gY3VycmVudEZsb3lkKHkseCx6KTsKCQlpZihuZXdfZGlzdGFuY2U8PWN1cnJlbnRfZGlzdCl7CgkJCWNvdXQ8PDE8PGVuZGw7CgkJCWFkZFRvR3JhcGgoeSx4LHopOwoJCX1lbHNlewoJCQljb3V0PDwiMCI8PGVuZGw7CgkJfQoJfQp9CmludCBtYWluKCl7CgljaW4+Pm51bWJlcl9vZl92ZXJ0ZXg+Pm51bWJlcl9vZl9lZGdlPj5udW1iZXJfb2ZfbmV3X3dheTsKCWZvcihpbnQgaT0wO2k8bnVtYmVyX29mX2VkZ2U7aSsrKXsKCQlpbnQgeCx5LHo7CgkJY2luPj54Pj55Pj56OwoJCUdbeF0ucHVzaF9iYWNrKHt5LHp9KTsKCQlHW3ldLnB1c2hfYmFjayh7eCx6fSk7CgkJZHBbeF1beV09ejsKCQlkcFt5XVt4XT16OwoJCWNoZWNrZXJfcGxhY2VbeF1beV09dHJ1ZTsKCQljaGVja2VyX3BsYWNlW3ldW3hdPXRydWU7Cgl9CglmbG95ZFdhcnNoYWxsKG51bWJlcl9vZl92ZXJ0ZXgpOwoJZm9yKGludCBpPTA7aTxudW1iZXJfb2ZfbmV3X3dheTtpKyspewoJCWludCB4LHksejsKCQljaW4+Png+Pnk+Pno7CgkJY2hlY2tOZXdXYXkoeCx5LHopOwoJfQoJcmV0dXJuIDA7Cn0K