import java.io.*;
import java.util.*;
import java.util.regex.*;
import java.net.*;
import java.util.Scanner.*;
import java.util.Map;
import java.util.HashMap;

public class okaimono {
    public static void main (String args[]) {  

	YahooSearchRequest yrequest = new YahooSearchRequest();
	KakakuSearchRequest krequest = new KakakuSearchRequest();
	RakutenSearchRequest rrequest = new RakutenSearchRequest();

	Scanner s = new Scanner(System.in);
	System.out.println("検索する商品を入力してください。");
	String query = s.next();
	yrequest.setQuery(query);
	yrequest.run();

       	krequest.setQuery(query);
	krequest.run();

	rrequest.setQuery(query);
	rrequest.run();

	int y =	Integer.parseInt(yrequest.getPrice());
	int r =	Integer.parseInt(rrequest.getPrice());
	int k =	Integer.parseInt(krequest.getPrice());
	if(y > r && r > k){
	    System.out.println("最安店舗:"+krequest.getShop());
	    System.out.println("最安値:"+krequest.getPrice());
		}
	else if(y > k && k > r){
	    System.out.println("最安店舗:"+rrequest.getShop());
	    System.out.println("最安値:"+rrequest.getPrice());
		}
	else if(y > r && r > k){
	    System.out.println("最安店舗:"+krequest.getShop());
	    System.out.println("最安値:"+krequest.getPrice());
		}
	else if(k > y && y > r){
	    System.out.println("最安店舗:"+rrequest.getShop());
	    System.out.println("最安値:"+rrequest.getPrice());
		}
	else if(k > r && r > y){
	    System.out.println("最安店舗:"+yrequest.getShop());
	    System.out.println("最安値:"+yrequest.getPrice());
		}
	else{
	    System.out.println("最安店舗:"+yrequest.getShop());
	    System.out.println("最安値:"+rrequest.getPrice());
		}
    }
}


class YahooSearchRequest {
    private String responseEncoding = "utf-8";
    private String urlEncoding = "utf-8";
    private String searchURL = "http://shopping.yahooapis.jp/ShoppingWebService/V1/itemSearch";
    private String param_appid;
    private String param_query;
    public String title;
    public String price;
    public String shop ="Yahoo!Shopping";

    public YahooSearchRequest() {
	param_appid = "dummy";
	param_query = "";
    }

    public void setQuery(String query) {
	try {
	    param_query = URLEncoder.encode(query, urlEncoding);
	}
	catch(UnsupportedEncodingException e) {
	    System.err.println("Unsupported Encoding.");
	}
    }

    public String getTitle() {
	return title;
    }

    public String getPrice() {
	return price;
    } 

    public String getShop() {
	return shop;
    }

    public void run() {
	String requestURL = searchURL +
	    "?appid=Q0MHqQ2xg64pvYoSLPOrYZ_ijNTcLcHxaOYRwvPA_IASe6uhiu3yJWbRhOCJsE68dw--&query=" + param_query+ "&sort=%2Bprice&hits=1";
	YahooResponse yresponse = new YahooResponse();
	yresponse.setURL(requestURL);
	yresponse.setEncoding(responseEncoding);
	yresponse.run();
	title = yresponse.getTitle();
	price = yresponse.getPrice();
	shop = yresponse.getShop();
    }
}

class KakakuSearchRequest {
    private String responseEncoding = "utf-8";
    private String urlEncoding = "utf-8";
    private String searchURL = "http://api.kakaku.com/WebAPI/ItemSearch/Ver1.0/ItemSearch.aspx";
    private String param_appid;
    private String param_query;
    public String title;
    public String price;
    public String shop = "価格.com";

    public KakakuSearchRequest() {
	param_appid = "dummy";
	param_query = "";
    }

    public void setQuery(String query) {
	try {
	    param_query = URLEncoder.encode(query, urlEncoding);
	}
	catch(UnsupportedEncodingException e) {
	    System.err.println("Unsupported Encoding.");
	}
    }

    public String getTitle() {
	return title;
    }

    public String getPrice() {
	return price;
    } 

    public String getShop() {
	return shop;
    } 

    public void run() {
	String requestURL = searchURL +
	    "?Keyword=" + param_query +
       	    "&ApiKey=83368a478a410ca13948c23fc84f5fce&SortOrder=pricerank&HitNum=1";
	KakakuResponse kresponse = new KakakuResponse();
	kresponse.setURL(requestURL);
	kresponse.setEncoding(responseEncoding);
       	kresponse.run();
	title = kresponse.getTitle();
	price = kresponse.getPrice();
	shop = kresponse.getShop();
    }
}

class RakutenSearchRequest {
    private String responseEncoding = "utf-8";
    private String urlEncoding = "utf-8";
    private String searchURL = "http://api.rakuten.co.jp/rws/2.0/rest?";
    private String param_appid;
    private String param_query;
    public String title;
    public String price;
    public String shop = "楽天市場";

    public RakutenSearchRequest() {
	param_appid = "dummy";
	param_query = "";
    }

    public void setQuery(String query) {
	try {
	    param_query = URLEncoder.encode(query, urlEncoding);
	}
	catch(UnsupportedEncodingException e) {
	    System.err.println("Unsupported Encoding.");
	}
    }

    public String getTitle() {
	return title;
    }

    public String getPrice() {
	return price;
    } 

    public String getShop() {
	return shop;
    }

    public void run() {
	String requestURL = searchURL +
	    "developerId=752f303422516fd57dc9f3cd09b38e24&operation=ItemSearch&version=2009-04-15&hits=1&page=1&keyword=" + param_query + "&sort=%2BitemPrice";
	RakutenResponse rresponse = new RakutenResponse();
	rresponse.setURL(requestURL);
	rresponse.setEncoding(responseEncoding);
       	rresponse.run();
	title = rresponse.getTitle();
	price = rresponse.getPrice();
	shop = rresponse.getShop();
    }
}



class YahooResponse {
    private String urlString;
    private String encoding;
    public String title;
    public String price;
    public String shop = "Yahoo!Shopping";

    public YahooResponse() {
	urlString = null;
	encoding = "utf-8";
    }

    public void setURL(String url) {
	this.urlString = url;
    }

    public void setEncoding(String encoding) {
	this.encoding = encoding;
    }

    public String getTitle() {
	return title;
    }

    public String getPrice() {
	return price;
    } 

    public String getShop() {
	return shop;
    }

    public void run() {

	Scanner scanner = null;

        try {
	    URL url = new URL(urlString);
	    URLConnection urlConnection = url.openConnection();
	    urlConnection.connect();
	    scanner = new Scanner(urlConnection.getInputStream(), encoding);
        }
        catch (IOException e) {
            System.err.println("Cannot connect: " + urlString);
            System.exit(1);
        }

	Pattern patternTitle = Pattern.compile("<Name>(.+?)</Name>", Pattern.DOTALL);
	Pattern patternPrice = Pattern.compile("<Price currency=\"JPY\">(.+?)</Price>", Pattern.DOTALL);

	scanner.useDelimiter("<Result>");	
	int i = 0;
	while(scanner.hasNext()) {
	    String resultContent = scanner.next();
	    if(i == 0) {
		i++;
		continue;
	    }

	    Matcher matcher;

	    matcher = patternTitle.matcher(resultContent);
	    if(matcher.find())
		title = matcher.group(1);

	    matcher = patternPrice.matcher(resultContent);
	    if(matcher.find())
		price = matcher.group(1);
	    System.out.println(shop);
	    System.out.println("  商品名: " + title);
	    System.out.println("  値段: " + price);
	    System.out.println();
	    i++;
	}
    }
}

class KakakuResponse {
    private String urlString;
    private String encoding;
    public String title;
    public String price;
    public String shop = "Kakaku.com";

    public KakakuResponse() {
	urlString = null;
	encoding = "utf-8";
    }

    public void setURL(String url) {
	this.urlString = url;
    }

    public void setEncoding(String encoding) {
	this.encoding = encoding;
    }

    public String getTitle() {
	return title;
    }

    public String getPrice() {
	return price;
    } 

    public String getShop() {
	return shop;
    }

    public void run() {

	Scanner scanner = null;

        try {
	    URL url = new URL(urlString);
	    URLConnection urlConnection = url.openConnection();
	    urlConnection.connect();
	    scanner = new Scanner(urlConnection.getInputStream(), encoding);
        }
        catch (IOException e) {
            System.err.println("Cannot connect: " + urlString);
            System.exit(1);
        }

	Pattern patternTitle = Pattern.compile("<ProductName>(.+?)</ProductName>", Pattern.DOTALL);
	Pattern patternPrice = Pattern.compile("<LowestPrice>(.+?)</LowestPrice>", Pattern.DOTALL);
	
	scanner.useDelimiter("<ProductInfo>");	
	int i = 0;
	while(scanner.hasNext()) {
	    String resultContent = scanner.next();
	    if(i == 0) {
		i++;
		continue;
	    }

	    Matcher matcher;
	    matcher = patternTitle.matcher(resultContent);
	    if(matcher.find())
		title = matcher.group(1);

	    matcher = patternPrice.matcher(resultContent);
	    if(matcher.find())
		price = matcher.group(1);
	    System.out.println(shop);
	    System.out.println("  商品名: " + title);
	    System.out.println("  値段: " + price);
       	    System.out.println();
	    i++;
	}
    }
}

class RakutenResponse {
    private String urlString;
    private String encoding;
    public String title;
    public String price;
    public String shop = "Rakuten";

    public RakutenResponse() {
	urlString = null;
	encoding = "utf-8";
    }

    public void setURL(String url) {
	this.urlString = url;
    }

    public void setEncoding(String encoding) {
	this.encoding = encoding;
    }

    public String getTitle() {
	return title;
    }

    public String getPrice() {
	return price;
    } 

    public String getShop() {
	return shop;
    }

    public void run() {

	Scanner scanner = null;

        try {
	    URL url = new URL(urlString);
	    URLConnection urlConnection = url.openConnection();
	    urlConnection.connect();
	    scanner = new Scanner(urlConnection.getInputStream(), encoding);
        }
        catch (IOException e) {
            System.err.println("Cannot connect: " + urlString);
            System.exit(1);
        }

	Pattern patternTitle = Pattern.compile("<itemName>(.+?)</itemName>", Pattern.DOTALL);
	Pattern patternPrice = Pattern.compile("<itemPrice>(.+?)</itemPrice>", Pattern.DOTALL);
	
	scanner.useDelimiter("<Items>");	
	int i = 0;
	while(scanner.hasNext()) {
	    String resultContent = scanner.next();
	    if(i == 0) {
		i++;
		continue;
	    }

	    Matcher matcher;

	    matcher = patternTitle.matcher(resultContent);
	    if(matcher.find())
		title = matcher.group(1);

	    matcher = patternPrice.matcher(resultContent);
	    if(matcher.find())
		price = matcher.group(1);
	    System.out.println(shop);
	    System.out.println("  商品名: " + title);
	    System.out.println("  値段: " + price);
       	    System.out.println();
	    i++;
	}
    }
}

