a:6:{i:0;s:44124:"				<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
									<div class="h1"><h1>USA Complete East and West Coast Package For 16 Days (Europamundo Package)</h1></div>
					<p class="breadcrumb ar uu small"><a href="http://www.maataratours.com/" title="Home">Home</a>
					
										
					<b class="ffv p2px">&rsaquo;</b>USA Complete East and West Coast Package For 16 Days (Europamundo Package)</p> 
									
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					
											<p class="mb5px"><b>Tour Code :</b> 90595</p>
												<p class="mb5px"><b>Duration :</b> 
						15 Nights / 16 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Washington, New York, Las Vegas, Los Angeles, San Francisco, Buffalo, Reno</p>
												<p class="mb5px"><b>Price (Starting From) :</b> <span class="dif">On Request</span></p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.maataratours.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="USA Complete East and West Coast Package For 16 Days (Europamundo Package) - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="111413"/>
						</form>
						
												</p>
											</td>
											<td class="p10px vat imgWidth200 w200px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w200px h200px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_17/497806/183216.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/497806/183216.jpg"  width="150" height="150"    alt="USA Complete East and West Coast Package For 16 Days (Europamundo Package)" title="USA Complete East and West Coast Package For 16 Days (Europamundo Package)" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
													<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Tour Detail</p>
								</div>
													
								Terms of Europamundo: Travel by bus with English speaking guide, basic travel insurance, and breakfast buffet.<br />
Includes arrival transfer<br />
City tour in: WASHINGTON, NEW YORK, LOS ANGELES, SAN FRANCISCO<br />
Evening transfer: Georgetown in WASHINGTON, Times Square in New York in NEW YORK, Long Beach in LOS ANGELES<br />
Transfer: Premium Outlet North in LAS VEGASAirfare not included<br />
Visa charges are additional.<br />
Any expenses of personal nature such as porterage, laundry, wines, mineral/bottled water, food and drink not in the regular menus provided by us, mini bar and telephone calls.<br />
Any other items not mentioned in the Inclusion<br />
City bed taxes if applicable as per the city of visit.<br />
Expenses which are personal in nature tips, Laundry, drinks etc.<br />
Extras in hotels, optional activities, and usually drinks during meals.<br />
Government Service tax 5.0 %								</div>
								<br />
																<div class="headHr">
					            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
					            </div>
					            
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 1:</b> Washington
										</p>
										<p class="aj">TODAYâS HIGHLIGHTS: Arrival Reception. Transfer to hotel and free time. You will receive information about the start of the circuit during the afternoon, or you can check the informative panels in the hotel reception area.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 2:</b> Washington
										</p>
										<p class="aj">After breakfast we take a tour of the city. First, we take a walk around the Pentagon and then pay a visit to Arlington Cemetery, the JFK Memorial and the Iwo Jima Memorial. We then stop at the Lincoln, Korea and Vietnam Memorials and a stop at the White House to take a photo. Then we take a stroll around the Capitol. In the afternoon, we go on a <br />
Package cost 3 Star<br />
1 Person 554378<br />
Per Person(min 2 pax required) 372856<br />
Destination No of Nights 3 Star<br />
Washington 2 Hilton Garden Inn Washington<br />
DC Downtown / similar hotels<br />
New York 3 The Westin New York Grand<br />
Central / similar hotels<br />
Buffalo 2 Adam's Mark Hotel and Event<br />
Center / similar hotels<br />
Los Angeles 3 Regency Inn Los Angeles / Similar hotels<br />
San Francisco 2 COVA Hotel / similar hotels<br />
Reno 1 Circus Circus Hotel & Casino<br />
Reno / similar hotels<br />
Las Vegas 2 Excalibur Hotel and Casino / similar hotels boat trip on the River Potomac to see some of the main landmarks of the city. After the trip, we return to the hotel. In the evening, we take an optional tour of Washington by night and then return to our accommodation. Note: due to the weather conditions, the Potomac River boat does not operate from October to March.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 3:</b> New York
										</p>
										<p class="aj">Breakfast and departure from Washington for LANCASTER, where we will see the typical farms of the Amish and their 18th-century lifestyle. We will then go on to PHILADELPHIA. Arrival and stop for a walk in the famous National Independence Park with the famous Liberty Bell, then free time for a coffee before going on to NEW YORK. Arrival in the evening.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 4:</b> New York
										</p>
										<p class="aj">After breakfast, a panoramic tour of the city seeing higher, middle and lower Manhattan. We will visit Wall Street, Rockefeller Center, St Patrickâs Cathedral, Central Park, Columbus Circle, the AOL/ Time Warner Building, the famous Village, Little Italy and Battery Park (with the Statue of Liberty). There will be an optional boat trip around Manhattan. In the evening, we include a transfer to Times Square, the real heart of the city, with Broadwayâs musicals and its spectacular lights.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 5:</b> New York
										</p>
										<p class="aj">After breakfast, free day in the Big Apple with an optional contrasts tour to see the main attractions of each of New Yorkâs great districts: Bronx, Harlem, Queens, Brooklyn. Afternoon free.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 6:</b> Buffalo
										</p>
										<p class="aj">After breakfast we depart for Buffalo. We stop off at CORNING, famous for having the world´s largest collection of glass objects. Any travellers who are interested will be able to explore the spectacular museum. Later, we continue to BUFFALO. Accommodation.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 7:</b> Buffalo
										</p>
										<p class="aj">After breakfast, we set out for Niagara Falls, starting with âGoat Islandâ where we will have a close up view of the Rapids and the Horsetail and embark on the âMaid of the Mistâ, small boat that takes us to the bottom of the famous waterfalls. In the afternoon, we visit one of the most famous Outlets in the city. Then at the end of the day, we return to our hotel in Buffalo. Note: The Maid of the Mist does not operate from October to March, due to the weather conditions.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 8:</b> Los Angeles
										</p>
										<p class="aj">At the time informed by the guide, we will make a transfer to the airport to catch a domestic flight included in your trip. On arrival at destination we will give you another hotel transfer. Your guide will contact you at the end of the afternoon or you can consult the information in your hotel reception. Note: remember that on domestic flights, the luggage normally allowed is one suitcase of up to 20 kg in the hold. Passengers must pay for all excess luggage directly to the airline.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 9:</b> Los Angeles
										</p>
										<p class="aj">After breakfast we included a panoramic tour of this extensive city. Tour including music center, civic center and financial center, via LA Live & Staples Center. We continue along Wilshire Boulevard, heading west of the city, past the Korean Quarter and the Brea Ditch to reach Beverly Hills. Continue on Sunset Boulevard to reach Hollywood and find the Walk of Fame with its thousands of stars, the Dolby Theater, Chinese Theater and the Hollywood sign. Free time to walk and have lunch, then return to the hotel. Late in the afternoon, we include a transfer to Long Beach, where palm trees mix with the glass buildings, we will have some time in Shoreline Village to walk and dine in their lively restaurants across the Queen Mary transatlantic.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 10:</b> Los Angeles
										</p>
										<p class="aj">Day off. If you wish you can optionally go to the beaches of Venece and Santa Monica or get to know Universal Studios.</p>
										</td>
										</tr>
										</table>					
										</div><div id="show_more_content" style="display:none;">
											<div class="data">
											<table class="w100 formTable bdr0 imgWidth">
											<tr>
											<td class="p10px vat">
											<p class="b large mb5px"><b class="dif">Day 11:</b> San Francisco
											</p>
											<p class="aj">We will leave Los Angeles early in the morning. We will travel to northern California through El Camino Real passing by Old Mission Santa Barbara. We will have lunch in Paso Robles. We will later continue to SAN FRANCISCO passing by Mission San Miguel. Late afternoon arrival.</p>
											</td>	
											</tr>
											</table>				
											</div>
											<div class="data">
											<table class="w100 formTable bdr0 imgWidth">
											<tr>
											<td class="p10px vat">
											<p class="b large mb5px"><b class="dif">Day 12:</b> San Francisco
											</p>
											<p class="aj">We include a city tour after breakfast. We will visit the Financial District, Union Square and its streetcars, the Theatre District, Nob Hill, the zigzaggy and flowery Lombard Street, Grace Cathedral, its famous Chinatown, the historic Haight Ashbury district, birthplace of the hippie movement. We will enjoy a panoramic view from Twin Peaks. We will take photos of the Golden Gate Bridge from the Palace of Fine Arts. We will go to Ghirardelly Square and finish our tour at the Fisherman´s Wharf and Pier 39, thus completing our seaside leisure offer. Free afternoon during which you may go on a boat tour of the fabulous bay. We include night transportation to North Beach, ¨Little Italy¨, the cityâs true nightlife hub which offers a wide range of restaurants.</p>
											</td>	
											</tr>
											</table>				
											</div>
											<div class="data">
											<table class="w100 formTable bdr0 imgWidth">
											<tr>
											<td class="p10px vat">
											<p class="b large mb5px"><b class="dif">Day 13:</b> Reno
											</p>
											<p class="aj">We will leave San Francisco crossing the Golden Gate Bridge with the view of its amazing landscapes. We will travel in Californiaâs wine region. We will visit one of the most popular wineries â JACUZZI FAMILY VINEYARDS â where we will learn about their wine tradition. We will later spend some time in SONOMA, a historic town with its Mission, its old Mexican military garrison and its big main square. Lunchtime. Once in SACRAMENTO, Californiaâs capital city, we will visit ¨Old Sacramento¨ which will show us how the city looked like in the 19th century â its old station, its old school, its lively establishments. We will later travel to the State of Nevada. Arrival in RENO. Free time in this modern city.We will leave San Francisco crossing the Golden Gate Bridge with the view of its amazing landscapes. We will travel in Californias wine region. We will visit one of the most popular wineries  JACUZZI FAMILY VINEYARDS  where we will learn about their wine tradition. We will later spend some time in SONOMA, a historic town with its Mission, its old Mexican military garrison and its big main square. Lunchtime. Once in SACRAMENTO, Californias capital city, we will visit ¨Old Sacramento¨ which will show us how the city looked like in the 19th century  its old station, its old school, its lively establishments. We will later travel to the State of Nevada. Arrival in RENO. Free time in this modern city.</p>
											</td>	
											</tr>
											</table>				
											</div>
											<div class="data">
											<table class="w100 formTable bdr0 imgWidth">
											<tr>
											<td class="p10px vat">
											<p class="b large mb5px"><b class="dif">Day 14:</b> Las Vegas
											</p>
											<p class="aj">We will visit VIRGINIA CITY, not far from Reno, a town museum that shows us how a mining town of the Wild West looked like in the 19th century. After a short tour, we will travel through the desert on our way to Las Vegas. Arrival in Las Vegas. We will optionally offer a Lights Night tour of Las Vegas.</p>
											</td>	
											</tr>
											</table>				
											</div>
											<div class="data">
											<table class="w100 formTable bdr0 imgWidth">
											<tr>
											<td class="p10px vat">
											<p class="b large mb5px"><b class="dif">Day 15:</b> Las Vegas
											</p>
											<p class="aj">Arrival and transfer to hotel. In the afternoon, we pay a visit to the Downtown district and the famous Strip, the avenue with the hotels, casinos and shows that have converted this city into a genuine theme part for adults. At night, we are offered an optional tour to see the Lights of Las Vegas.</p>
											</td>	
											</tr>
											</table>				
											</div>
											<div class="data">
											<table class="w100 formTable bdr0 imgWidth">
											<tr>
											<td class="p10px vat">
											<p class="b large mb5px"><b class="dif">Day 16:</b> Las Vegas
											</p>
											<p class="aj">After breakfast, end of our services.</p>
											</td>	
											</tr>
											</table>				
											</div>					
									</div>									<p class="mt10px ac"><a class="buttonBig p5px10px dib b" id="more_button" href="javascript:topDestinationToggle('show_more_content','more_button');" >View More &#9660;</a></p>
																	<br />
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>Hotel</li>
																						<li>Transport</li>
																			</ul>
								</div>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Exclusions</p>
								</div>
								
								<ul><li>Airfare not included</li><li>
Visa charges are additional.</li><li>
Any expenses of personal nature such as porterage, laundry, wines, mineral/bottled water, food and drink not in the regular menus provided by us, mini bar and telephone calls.</li><li>
Any other items not mentioned in the Inclusion</li><li>
City bed taxes if applicable as per the city of visit.</li><li>
Expenses which are personal in nature tips, Laundry, drinks etc.</li><li>
Extras in hotels, optional activities, and usually drinks during meals.</li><li>
Government Service tax 5.0 %</li></ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Rate Card</p>
								</div>
								
    	<p class="h dif xlarge b mb5px">Preview of the Prices</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="data p5px">Package cost</td>
				<td class="data p5px">3 Star</td>
			</tr>
			<tr>
				<td class="data p5px">1 Person</td>
				<td class="data p5px">554378</td>
			</tr>
			<tr>
				<td class="data p5px">Per Person(min 2 pax required)</td>
				<td class="data p5px">372856</td>
			</tr>
		</table></div><br>
    	<p class="h dif xlarge b mb5px">Hotels Used / Similar</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="data p5px">Destination</td>
				<td class="data p5px">No of Nights</td>
				<td class="data p5px">3 Star</td>
			</tr>
			<tr>
				<td class="data p5px">Washington</td>
				<td class="data p5px">2</td>
				<td class="data p5px">Hilton Garden Inn Washington DC Downtown / similar hotels</td>
			</tr>
			<tr>
				<td class="data p5px">New York</td>
				<td class="data p5px">3</td>
				<td class="data p5px">The Westin New York Grand Central / similar hotels</td>
			</tr>
			<tr>
				<td class="data p5px">Buffalo</td>
				<td class="data p5px">2</td>
				<td class="data p5px">Adam's Mark Hotel and Event Center / similar hotels</td>
			</tr>
			<tr>
				<td class="data p5px">Los Angeles</td>
				<td class="data p5px">3</td>
				<td class="data p5px">Regency Inn Los Angeles / similar hotels</td>
			</tr>
			<tr>
				<td class="data p5px">San Francisco</td>
				<td class="data p5px">2</td>
				<td class="data p5px">Regency Inn Los Angeles / similar hotels</td>
			</tr>
			<tr>
				<td class="data p5px">Reno</td>
				<td class="data p5px">1</td>
				<td class="data p5px">COVA Hotel / similar hotels</td>
			</tr>
			<tr>
				<td class="data p5px">Las Vegas</td>
				<td class="data p5px">2</td>
				<td class="data p5px">Excalibur Hotel and Casino / similar hotels</td>
			</tr>
		</table></div><br>								</div>
									
								<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Terms &amp; Conditions</p>
								</div>				
								<p><strong>Cancellation Policy</strong>

<ul>
	<li>Booking Policy are as follows</li>
	<li>A non-refundable, non- transferable deposit of EUR 100 per person is required to guarantee the booking.</li>
	<li>Final payment for your vacation is due 30 days prior to the departure</li>
	<li>The customer may cancel the services requested or booked at any time, whereby they are entitled to a refund for the amounts paid, but must compensate the agency Via.com a sum of INR 2500 per person), except in cases of force majeure, The processing costs plus the cost of cancellation, if these have been incurred, once the journey has been confirmed by Europa Mundo and regardless of the departure date.</li>
	<li>Before departure, Cancellation fee per person</li>
	<li>31 days or more- Euro 100 will be charged</li>
	<li>less than 30 days- Euro 100 + 10% of the total tour cost</li>
	<li>Less than 10 days- Euro 100 + 25% of the total tour cost</li>
	<li>Less than 3 days- Euro 100 + 35% of the total tour cost</li>
	<li>Less than 1 day- 100% of the total tour cost</li>
	<li>No shows at the start, without prior cancellation, will not be entitled to any refund except through force majeure, which will be examined on a case by case basis).</li>
</ul>

<p><strong>Terms and Conditions</strong>

<ul>
	<li>Passport Copies for all the bookings made is mandatory and requires to send us the first page and last page.</li>
	<li>Payment for all bookings must reach our office prior to commencement date of cancellation as applicable.</li>
	<li>The services provided by Europamundo Vacaciones S.L. are overland.</li>
	<li>Europamundo Vacaciones S.L.is not responsible for the consequences or circumstances arising from services that are not provided by our company flight problems,loss of or damage to luggage on flights, problems at borders/customs or those relating to documentation,etc.).</li>
	<li>Non Admittance of Passengers-A moderate degree of physical health and physical ability is required to participate in our tours.In the event of any passenger with special physical or mental needs,or in cases where a passenger is over 75 years of age is travelling alone,Europamundo must be informed in writing at the time of booking, which will be analysed on a case by case basis,and it is possible that Europamundo may request a medical report.In cases in which the customer accepts the tour,Europamundo cannot assume any responsibility in relation to the difficulty or impossibility that the said passenger may encounter in undertaking the activities planned for the tour package, nor can they assume any responsibility for providing assistance for their adaptation to, or continuation of, the trip. No reservations will be accepted and Europamundo reserves the right to suspend any tour for passengers whose physical and/or mental conditions make their participation in it very difficult or dangerous to themselves or others.Europamundo likewise reserves the right to exclude passengers who significantly disrupt the</li>
	<li>smooth-running of the trip.</li>
	<li>Documentation- All passengers must bring their valid documentation passport, visas, health certificates, etc.), with the problems and disadvantages that may arise from non-compliance with this norm being their full responsibility.The interruption of the services taken out is not considered Cancellation for force majeure where the passenger is not carrying the required documentation or in instances where the traveller is denied passage through any border for this reason.It should be pointed out that we often note that the European border authorities often deny transit to passengers who they believe have acquired the trip for purposes other than tourism immigrants).</li>
	<li>Europamundo cannot undertake any arrangements or make any reimbursement for services that cannot be used in such cases.Cancelling a tour before it starts due to a rejected visa application is, however, considered to be through force majeure provided that this is documented or noted in the passport, and that we are notified within 72 hours following the refusal).</li>
	<li>Guaranteed Departures- All our tours have guaranteed departures, although in extremely limited cases, it could transpire that Europamundo is unable to operate a given departure.In this case, and by way of compensation, Europamundo will provide the same trip on an earlier or later date than the one chosen or another trip with similar features vis-a-vis duration and route, and offer, by way of compensation, a reduction of 50% on the value of the aforementioned journey.</li>
	<li>Cancellations of guaranteed departures may arise without compensation or liability on behalf of Europamundo) in cases of exceptional unforeseen circumstances - among others - wartime conflicts, terrorist attacks, natural disasters, epidemics and economic circumstances that generate a very significant drop in the expected sales.</li>
	<li>Meeting Point or Departure Point- Unless otherwise stated, the starting point for the beginning of a tour is the hotel, if this was booked as an additional night or as a stop-over or end-point for another Europamundo itinerary.It is very important that travellers check the place of departure on their travel pass.No shows at that place on the date and time confirmed can involve losing the purchased services without any right to a refund of the same, with a lack of punctuality incurring the same consequences,both at the beginning of a tour and during the course of the same.</li>
	<li>Additional Nights- The prices listed for Additional Nights are only valid for travellers who purchase tours with Europamundo,provided that these nights immediately precede or are a direct extension of our tour.Given that Europamundo has no places reserved in hotels for these additional nights, we cannot guarantee either the rate which in periods of high hotel occupancy or difficulty may vary), or the hotel that is booked, which in many cases will be confirmed at the last minute.</li>
</ul>

<p><strong>Transfer Policy-</strong>

<ul>
	<li>They transfers included for the trip are specified on a tour by tour basis. In the event that transfers are included, which could be private or shared with other passengers, these may be provided from hotel to hotel or from the airport in the city where the passenger will join the tour to the hotel or vice versa) at the beginning or end of the trip, with the right to the aforementioned transfer being lost where the passenger has arranged nights in between through a different travel company or where the airport / port is located at a distance of over 40 km. In the event that the traveller themselves request a change to this service, responsibility for this transfer is linked to the correct information on the number of the flight / train / hotel, with it being the passenger or travel agents responsibility, in this case, to pass on this information.</li>
	<li>Shared Bookings- Europamundo will accept shared bookings for individual travellers on all our tours at an additional cost of 35 Euros. No reservations will be accepted for sharing on nights that are added on to the tours. In cases where a section of the trip is taken, shared reservations are accepted only if the length of the section includes at least 7 nights in hotels.</li>
	<li>Double Bedrooms and Triple Bedrooms- Europamundo cannot guarantee that all the rooms in the hotels will have double beds and it is possible that, in some hotels, the room will be a twin two single beds). In many hotels there are no triple rooms, with these actually being a double room of one or two beds) with an additional bed which in some cases might be a folding one). The conditions and comfort are lower than in the doubles. We do not recommend booking triple rooms for three adults; we would only suggest this for families travelling with a child.</li>
	<li>Children under 3 years of age go Free they do not have the right to a seat in the coach or to a bed in the hotel)</li>
	<li>Children from 3 to 8 years of age are entitled to a discount of 40% with a minimum of one adult per child)</li>
	<li>Children from 9 to 15 years of age are entitled to a 10% discount on the value of the trip.</li>
	<li>Europamundo will not accept any liability for the loss or theft of luggage occurring at the hotels or where bags are left in the hold of the coaches overnight. Europamundo cannot accept responsibility for the loss or theft of baggage, money, jewellery, electronic items or valuables, even when this occurs in the rooms of the hotels or if the items have been deposited in the safe-deposit box. In the event that passengers travel with luggage that has a higher value than is covered in the included policy, we recommend making a declaration for these items before commencing a tour and taking out additional insurance.</li>
	<li>Changes in Prices- In countries where our catalogues publish the prices for European tours in dollars, the published prices have been calculated at the rates of exchange prevailing at the time that the catalogue was created November 2015) and these will not be modified if the average monthly comparison in the month before that in which the booking was made, for the dollar against the Euro, was not less than 1.12 USD / Euro and not more than 1.28 USD / Euro.In the event of variations above or below the specified values, the prices of this manual will be altered increased or decreased) by the same proportion.</li>
	<li>Prices in 2017- In the event that customers wish to take a trip during 2017 which start after the dates specified in this catalogue,Europamundo will uphold the price indicated in this brochure if passengers make a firm booking with the deposit being received before the 15th of January 2017.This booking does not allow changes to the itinerary, alterations to the departure date or name changes</li>
</ul>

<p><strong>Note:</strong>

<ul>
	<li>We are not holding any rooms or airline seats as of now and above mentioned is quote only , subject to availability at the time of confirmation .</li>
	<li>First preference will be given to mentioned hotels for reservation. In case of non-availability of these hotels we shall advise the similar or next available option with supplement cost .</li>
	<li>Itinerary provided is just suggestive and the sightseeing will be done as per availability.</li>
	<li>In case of no show or late cancellation after reconfirmation charges applicable as per the Hotels Policy and other vendors policy.</li>
</ul>								</div>
														
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.maataratours.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="USA Complete East and West Coast Package For 16 Days (Europamundo Package) - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="111413"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-gangtok.htm" title="Packages in Gangtok">Gangtok</a> <b class="alpha50 bn small">(7)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi</a> <b class="alpha50 bn small">(7)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-darjeeling.htm" title="Packages in Darjeeling">Darjeeling</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-manali.htm" title="Packages in Manali">Manali</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-jaipur.htm" title="Packages in Jaipur">Jaipur</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-srinagar.htm" title="Packages in Srinagar">Srinagar</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-shimla.htm" title="Packages in Shimla">Shimla</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-alleppey.htm" title="Packages in Alleppey">Alleppey</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-agra.htm" title="Packages in Agra">Agra</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/packages-in-singapore-city.htm" title="Packages in Singapore">Singapore</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-munnar.htm" title="Packages in Munnar">Munnar</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-baramulla.htm" title="Packages in Baramulla">Baramulla</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-kochi.htm" title="Packages in Kochi">Kochi</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-paris.htm" title="Packages in Paris">Paris</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-rotorua.htm" title="Packages in Rotorua">Rotorua</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-auckland.htm" title="Packages in Auckland">Auckland</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-anantnag.htm" title="Packages in Anantnag">Anantnag</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-christchurch.htm" title="Packages in Christchurch">Christchurch</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-havelock.htm" title="Packages in Havelock">Havelock</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-pattaya.htm" title="Packages in Pattaya">Pattaya</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-dharamshala.htm" title="Packages in Dharamshala">Dharamshala</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-shillong.htm" title="Packages in Shillong">Shillong</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-zurich.htm" title="Packages in Zurich">Zurich</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-pushkar.htm" title="Packages in Pushkar">Pushkar</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-nainital.htm" title="Packages in Nainital">Nainital</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-sydney.htm" title="Packages in Sydney">Sydney</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-thekkady.htm" title="Packages in Thekkady">Thekkady</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-varanasi.htm" title="Packages in Varanasi">Varanasi</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-rishikesh.htm" title="Packages in Rishikesh">Rishikesh</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/packages-in-pelling.htm" title="Packages in Pelling">Pelling</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/beach-islands-holidays-catid.htm" title="Beach and Islands Packages">Beach and Islands</a> <b class="alpha50 bn small">(14)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/heritage-holidays-catid.htm" title="Heritage Packages">Heritage</a> <b class="alpha50 bn small">(22)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/valley-holidays-catid.htm" title="Valley Packages">Valley</a> <b class="alpha50 bn small">(15)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/forts-palaces-holidays-catid.htm" title="Forts and Palaces Packages">Forts and Palaces</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/hill-station-holidays-catid.htm" title="Hill Station Packages">Hill Station</a> <b class="alpha50 bn small">(13)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/wildlife-nature-holidays-catid.htm" title="Wildlife and Nature Packages">Wildlife and Nature</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Packages">Religious & Pilgrimage</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/lakes-rivers-holidays-catid.htm" title="Lakes & Rivers Packages">Lakes & Rivers</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/adventure-holidays-catid.htm" title="Adventure Packages">Adventure</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.maataratours.com/romantic-holidays-catid.htm" title="Romantic Packages">Romantic</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/national-parks-holidays-catid.htm" title="National Parks Packages">National Parks</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.maataratours.com/water-sports-activity-holidays-catid.htm" title="Water Sports and Activity Packages">Water Sports and Activity</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
								
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:115:"Book USA Complete East and West Coast Package For 16 Days (Europamundo Package) - 15 Nights / 16 Days Tour Packages";i:2;s:229:"book usa complete east and west coast package for 16 days (europamundo package) - 15 nights / 16 days tour packages, heritage tour packages, washington, new york, las vegas, los angeles, san francisco, buffalo, reno tour packages";i:3;s:270:"Maa Tara Tours & Travels offers USA Complete East and West Coast Package For 16 Days (Europamundo Package) - 15 Nights / 16 Days tour package, budget Heritage tour packages for Washington, New York, Las Vegas, Los Angeles, San Francisco, Buffalo, Reno at exciting price.";i:4;s:1375:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Washington, New York, Las Vegas, Los Angeles, San Francisco, Buffalo, Reno"        
		                 },
		      "description": "Terms of Europamundo: Travel by bus with English speaking guide, basic travel insurance, and breakfast buffet.
Includes arrival transfer
City tour in: WASHINGTON, NEW YORK, LOS ANGELES, SAN FRANCISCO
Evening transfer: Georgetown in WASHINGTON, Times Square in New York in NEW YORK, Long Beach in LOS ANGELES
Transfer: Premium Outlet North in LAS VEGASAirfare not included
Visa charges are additional.
Any expenses of personal nature such as porterage, laundry, wines, mineral/bottled water, food and drink not in the regular menus provided by us, mini bar and telephone calls.
Any other items not mentioned in the Inclusion
City bed taxes if applicable as per the city of visit.
Expenses which are personal in nature tips, Laundry, drinks etc.
Extras in hotels, optional activities, and usually drinks during meals.
Government Service tax 5.0 %",
		      "name": "USA Complete East and West Coast Package For 16 Days (Europamundo Package)",
		      "telephone": "+91-7001746331"
		    }
		    </script>
			";i:5;N;}