a:6:{i:0;s:23394:"				<div class="h1"><h1>Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sanskrutivacations.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sanskrutivacations.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017</p>
				<br />
				
								
						<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">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						12 Nights / 13 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">San Francisco, Solvang</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 278700 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017 - 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="85345"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_14/393874/149990.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/393874/149990.jpg"  width="150" height="150"    alt="Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017" title="Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					All Hotels As Mentioned Below<br />
Airport Transfers On Private Basis (From Jfk & To Buf Airport & From Las Airport). Drop Off From Sfo Hotel Will Be Via Hotel Shuttle. If The Shuttle Is Not Operating, Passengers Will Have To Pay Cab Fare On Own.<br />
12 Dinners At Indian Restaurant (Choice Of Veg, Non Veg & Jain)<br />
12 American Buffet Breakfast<br />
Hindi Speaking Tour Director (Will Meet At 6 Pm On Day 1 & Be With The Group Till End Of Day 6 On The East) & A Different Tour Director On The West From Day 7 To End Of Day 12).<br />
Tour Will Be Conducted In A 55 Seater/22 Seater/15 Seater/Van Based On The Number Of People Signed For The Tour<br />
Wifi At All Hotels As Well As 55 Seater Coaches Only. N/A For Van Or Smaller Vehicles.<br />
Sightseeing:<br />
Statue Of Liberty<br />
Wall St Bull<br />
Freedom Tower<br />
Doubledecker New York City Tour<br />
Philadelphia Doubledecker Tour <br />
Uss Constellation<br />
Paddle Boat In Baltimore<br />
City Tour Of Dc (Guided)<br />
Air & Space Museum<br />
Capitol Tour In Dc (If Open For Tours) For Wednesday Departures Only<br />
Museum Of Natural History (For Thursday Departures Only)<br />
Hershey’S Chocolate World <br />
Pennsylvania State Capitol (If Open)<br />
Corning Glass Museum<br />
Illumination Of Falls<br />
Imax Movie In Niagara<br />
Cave Of The Winds<br />
Maid Of The Mist<br />
Doubledecker City Tour In Vegas <br />
Popular Mystere Show In Vegas (Mindfreak Show For May 9, May 10, July 11, July 12, Sept 12, Sept 13, Nov 8 Dates). Age Limit: Under 1 Year For Mystere & Under 5 Yrs For Mind Freak Not Allowed. No Refunds If Missed.<br />
Skyspace In Los Angeles With Slide<br />
Santa Monica Beach<br />
City Tour Of Los Angeles (Guided)<br />
Universal Studios<br />
Solvang Carriage Ride Not Operational During Few Dates In August & September) As Well As When The Temp Is Above 95 Degrees. In This Case, We Will Give A Winery Tour. If There Is A Problem With The Horses, Carriage Ride Will Be Provided. <br />
Bay Cruise<br />
City Tour Of San Francisco (Guided)<br />
Cable Car (If Operational)Lunches<br />
Domestic Flights Arriving Into Jfk & Departing Out Of Buf (For Wednesday Departure, Your Flight Will Be Arriving On Wed At Jfk & Departing Out Of Buffalo, Ny On Tuesday.<br />
Visa & Processing Fees<br />
Porterage<br />
Mandatory Tips ($12 Per Person) To Be Given To The Tour Director On The East & $10 Per Person On The West Coast. This Cannot Be Pre Paid.<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> Arrival
								</p>
								<p class="aj">Welcome to NY!!!! Your pick up will be done by our airport representative (Baggage claim for Domestic passengers & Currency exchange for International arrivals. Representative will be at Baggage claim for Domestic passengers & Currency exchange for International arrivals. (in order for us to coordinate the pick-up, we need a valid contact number for the passengers. Wait time will vary anywhere from 30 minutes to 1 hour for International passengers). Check into Hotel Hilton (Check in time 3 PM). ****Please note that the hotel may take your Credit card at the time of check in towards Incidentals. The hold on the card will be released once the guests check out if no charges are incurred**********<br />
Meet your tour manager at 6 pm in the hotel lobby to start the tour. Enjoy a wonderful buffet dinner at Indian restaurant. After dinner, get one hour of free time at Times Square to see the city in action at night. Overnight at Hotel (HILTON JFK OR SIMILAR). For passengers wising to stay longer, please take cab on own to get to the hotel.</p>					
									<p><b>Meals : </b> (Dinner)</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> New York
								</p>
								<p class="aj">Enjoy a Hearty buffet breakfast at the hotel & depart at 7:45 am to get on to the Statue of Liberty Ferry from Battery park. View the world famous iconic Statue symbolizing the country’s freedom. Lunch on own. Make a pit stop to see the “NY BULL” on Wall St. This bronze statue weighs 3200 kgs & is a symbol of financial optimism & prosperity. Enjoy a scenic view from the top of Freedom tower. This is now the tallest building on the Western Hemisphere and stands in place of Twin towers. After an early dinner at the Indian restaurant, see New York at its best from a double-decker bus. In “The City that Never Sleeps,” the best sightseeing happens after the sun goes down. Discover the brilliant lights, stunning views and vibrant nightlife with double-decker Night Tour! Overnight at Hilton JFK or similar</p>					
									<p><b>Meals : </b> (Breakfast, Dinner)</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> Philadelphia
								</p>
								<p class="aj">Get an early start to your day & drive to Philadelphia (approximately 2 hours’ drive without traffic. Enjoy an entertaining tour of the largest city in Pennsylvania state in a double-decker bus.  Our entertaining tour guide is a history buff, and he will relate the love of the city and a real sense of Philadelphia’s place in history to the group. Lunch on own. Drive to the beautiful city of Baltimore (2 hours’ drive approximately) to view one of its Historic ships – USS Constellation which carried an important diplomatic role in Civil war. The sloop was launched on 26 August 1854 and commissioned on 28 July 1855 with Captain Charles H. Bell in command. She remained in service for close to a century before finally being retired in 1954, and preserved as a museum ship. Enjoy a ride in a self-driven paddleboat (that holds 4 passengers) on the Baltimore’s inner harbor.  Drive to outskirts of DC to check into your hotel (approximately one hour’ drive). Dinner enroute. Check into Marriott Crystal city or Similar)</p>					
									<p><b>Meals : </b> (Breakfast, Dinner)</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> Philadelphia
								</p>
								<p class="aj">Today after breakfast, enjoy a tour of the Capitol building-if open for tours (seat of United States Congress) & learn a little bit more in detail about the Nation’s legislature. Enjoy city tour with a specialized guide in DC covering all the major landmarks. See all the key attractions DC has to offer and learn about the history and trivia that surrounds Washington on this interactive tour of the capital city. You will visit the major monuments on this quick and efficient tour and see the best attractions<br />
At the end of the city tour, you will be given time at Air & space museum to view all the different exhibits related to space & Aeronautics. Lunch on own. Proceed to Hershey’s Chocolate world & enjoy a ride depicting the various stages of chocolate making. Dinner at Indian restaurant & check into Hotel (Hilton Harrisburg or Similar).<br />
********Please note that for Thursday departures, Capitol tour in DC is not included. We will instead do a city tour of DC in the morning followed by two museums- AIR & SPACE MUSEUM & MUESEUM OF NATURAL HISTORY. Rest of the itinerary remains the same.</p>					
									<p><b>Meals : </b> (Breakfast, Dinner)</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> Pennsylvania
								</p>
								<p class="aj">After breakfast, proceed to do the Pennsylvania Capitol tour (if open for tours) & drive to Corning Glass museum (approximately 3 hours) to view over 40,000 objects representing more than 3500 years’ of glass making. Lunch on own. Proceed to Niagara Falls (approximately 2 hours of drive). Dinner at Indian restaurant. View the illumination of falls at night. This illumination includes a range of colors that alternate throughout the evening and shine over all of Niagara Falls & stay overnight at hotel (Sheraton at the falls or similar)</p>					
									<p><b>Meals : </b> (Breakfast, Dinner)</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> Pennsylvania
								</p>
								<p class="aj">Today after breakfast, enjoy a 45 minute IMAX movie at the Niagara adventure theatre. To view you next attraction, Cave of the Winds, you will take an elevator ride- 175 feet below to get to a feel the power of Falls first hand. Geared-up in a souvenir rain poncho and specially designed sandals, guests follow wooden walkways along Niagara River to the Hurricane Deck. Do not forget to take extra pair of clothes as you will definitely get wet. You will also take a closer look at the Bridal veil falls in a boat ride abroad Maid of the mist. Lunch on own. Evening Free on own. Dinner at Indian restaurant & overnight at hotel.</p>					
									<p><b>Meals : </b> (Breakfast, Dinner)</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> Pennsylvania
								</p>
								<p class="aj">After breakfast, our representative will pick you up from the hotel for airport transfer based on your individual flights (please note that check out time is 11 am). Packed breakfast option is not available for passengers taking early flight. <br />
Welcome to LAS VEGAS!!!! Your pick up will be done by our airport representative (Baggage claim for Domestic passengers. Check into Hotel PLANET HOLLYWOOD (Check in time 3 PM). ****Please note that the hotel may take your Credit card at the time of check in towards Incidentals. The hold on the card will be released once the guests check out if no charges are incurred. If you would like to do an early check in, please check in with the front desk. Early check in fee is approximately $22 per room based on availability **********<br />
Meet your tour manager at 6 pm in the hotel lobby to start the tour. Enjoy a wonderful buffet dinner at Indian restaurant. After dinner, you will be taken around the city in a Double-decker bus where your guide will explain all about Sin city. Overnight at hotel.</p>					
									<p><b>Meals : </b> (Breakfast)</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> Grand Canyon coach tours
								</p>
								<p class="aj">Today is a free day on own. If you have booked your Grand Canyon through us, our Tour manager will drop you off at the pickup location for your tour and Breakfast will be packed for those passengers taking the Grand Canyon coach tours. For passengers, choosing to not take the Grand Canyon, you will be provided with a $12 gift card, Valid at Earl of Sandwich inside Planet Hollywood.<br />
After dinner at Indian restaurant, our bus will pick you up to take you to watch an Amazing & exciting ACROBATICS SHOW -MYSTERE show. Deemed a theatrical "flower in the desert," Mystère thrills generations of audiences with its exhilarating blend of whimsy, drama and the unimaginable brought to life on stage. Honored eight times as "Best Production Show" by the Las Vegas Review-Journal, Mystère has an international cast of 75 performers featuring dancers, singers, musicians and champion-caliber acrobats. Overnight at hotel.<br />
(For Wednesday departures, DAY 1 will be dinner with MYSTERE Show in the evening while DAY 2 – Thursday will be day free for Grand Canyon & evening will have Double-Decker tour).</p>					
									<p><b>Meals : </b> (Breakfast, Dinner)</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 buffet breakfast at the hotel, have an early start & depart for Los Angeles. Visit the OUE Skyspace and experience a Panoramic 360-degree View from the second tallest building West of Mississippi. The building structure is designed to withstand earthquakes to the magnitude of 8.3 on richter scale. You will be taken to the 70th floor to get a wonderful view of the city. You can also slide from one level of the building to another to get a glimpse of the city in its glory. From there, drive to Santa Monica Beach & enjoy a relaxed time at the Pier. With a carousel, an arcade, an amusement park, restaurants, the Santa Monica Pier offers a wide range of activities for the whole family. Drive to Indian restaurant for dinner. Check into Hotel for Overnight stay.</p>					
									<p><b>Meals : </b> (Breakfast, Dinner)</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">After breakfast at the hotel, proceed for city tour of Los Angeles. Enjoy a guided tour of Los Angeles by our experienced tour guide. Drive through the busy streets of Avenue of Stars, Kodak theater and rodeo drive. Get your picture of the famous Hollywood sign from one of the vantage points.<br />
You will then be taken to Universal Studios to enjoy the rest of the day at the park. This Sprawling Amusement park with thrilling theme rides, restaurants, shows, shops and one of the oldest real working movie studio in use is definitely a unique & fun filled experience for the whole family. Evening Dinner at Indian restaurant. Overnight at Hotel.</p>					
									<p><b>Meals : </b> (Breakfast, Dinner)</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> 
									</p>
									<p class="aj">Today after breakfast, you will drive to Solvang (approximately 3 hours). Also known as Danish city of California, Solvang is known for its’ untamed beauty and perfect weather all throughout the year. Enjoy Lunch on own. You will take a historic 25-minute ride though the city’s downtown in a Horse trolley (IF OPEN). Board your bus & drive to San Francisco (approximately 4 hours). Dinner at Indian restaurant & overnight at Hotel.</p>					
										<p><b>Meals : </b> (Breakfast, Dinner)</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">You will have a full day to enjoy in San Francisco today. After breakfast at the hotel, enjoy the amazing skyline of San Francisco on BAY CRUISE with spectacular views of Alcatraz, Golden Gate bridge & Bay Bridge. An Audio tour in 16 languages is available to get detailed history of this great city. Lunch on own. Your guide today will cover all the major highlights of the city in an in-depth city tour. Enjoy a wonderful ride aboard Cable car (the world’s last manually operated Cable car system- if operational). Enjoy a spectacular view of San Francisco from Twin peaks. San Francisco's Twin Peaks are two prominent hills near the center of the city. Each one stands at about 922 feet tall, and they offer amazing views of the Bay Area all the way down to the water. Dinner at Indian restaurant & Overnight at hotel.</p>					
										<p><b>Meals : </b> (Breakfast, Dinner)</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> Departure
									</p>
									<p class="aj">Today after breakfast, check out from the hotel (check out time is 11 am). The hotel offers complimentary shuttle to the airport. Please check with the bell desk regarding shuttle timings. If you have any early flight & no shuttle is operational, please take a cab on own. (Shuttle timings is from 5 AM to 9 PM). Packed breakfast option is not available for passengers taking early flight.</p>					
										<p><b>Meals : </b> (Breakfast)</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 />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Lunches</li><li>
Domestic Flights Arriving Into Jfk & Departing Out Of Buf (For Wednesday Departure, Your Flight Will Be Arriving On Wed At Jfk & Departing Out Of Buffalo, Ny On Tuesday.</li><li>
Visa & Processing Fees</li><li>
Porterage</li><li>
Mandatory Tips ($12 Per Person) To Be Given To The Tour Director On The East & $10 Per Person On The West Coast. This Cannot Be Pre Paid.</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017 - 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="85345"/>
						</form>
						</div>
						
						";i:1;s:106:"Book Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017 - 12 Nights / 13 Days Tour Packages";i:2;s:168:"book tl 004 : panorama east & west (wed & thurs departures)- pnew 2017 - 12 nights / 13 days tour packages, heritage tour packages, san francisco, solvang tour packages";i:3;s:204:"Sanskruti Vacations offers Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017 - 12 Nights / 13 Days tour package, budget Heritage tour packages for San Francisco, Solvang at exciting price.";i:4;s:2724:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "San Francisco, Solvang"        
		                 },
		      "description": "All Hotels As Mentioned Below
Airport Transfers On Private Basis (From Jfk & To Buf Airport & From Las Airport). Drop Off From Sfo Hotel Will Be Via Hotel Shuttle. If The Shuttle Is Not Operating, Passengers Will Have To Pay Cab Fare On Own.
12 Dinners At Indian Restaurant (Choice Of Veg, Non Veg & Jain)
12 American Buffet Breakfast
Hindi Speaking Tour Director (Will Meet At 6 Pm On Day 1 & Be With The Group Till End Of Day 6 On The East) & A Different Tour Director On The West From Day 7 To End Of Day 12).
Tour Will Be Conducted In A 55 Seater/22 Seater/15 Seater/Van Based On The Number Of People Signed For The Tour
Wifi At All Hotels As Well As 55 Seater Coaches Only. N/A For Van Or Smaller Vehicles.
Sightseeing:
Statue Of Liberty
Wall St Bull
Freedom Tower
Doubledecker New York City Tour
Philadelphia Doubledecker Tour 
Uss Constellation
Paddle Boat In Baltimore
City Tour Of Dc (Guided)
Air & Space Museum
Capitol Tour In Dc (If Open For Tours) For Wednesday Departures Only
Museum Of Natural History (For Thursday Departures Only)
Hershey’S Chocolate World 
Pennsylvania State Capitol (If Open)
Corning Glass Museum
Illumination Of Falls
Imax Movie In Niagara
Cave Of The Winds
Maid Of The Mist
Doubledecker City Tour In Vegas 
Popular Mystere Show In Vegas (Mindfreak Show For May 9, May 10, July 11, July 12, Sept 12, Sept 13, Nov 8 Dates). Age Limit: Under 1 Year For Mystere & Under 5 Yrs For Mind Freak Not Allowed. No Refunds If Missed.
Skyspace In Los Angeles With Slide
Santa Monica Beach
City Tour Of Los Angeles (Guided)
Universal Studios
Solvang Carriage Ride Not Operational During Few Dates In August & September) As Well As When The Temp Is Above 95 Degrees. In This Case, We Will Give A Winery Tour. If There Is A Problem With The Horses, Carriage Ride Will Be Provided. 
Bay Cruise
City Tour Of San Francisco (Guided)
Cable Car (If Operational)Lunches
Domestic Flights Arriving Into Jfk & Departing Out Of Buf (For Wednesday Departure, Your Flight Will Be Arriving On Wed At Jfk & Departing Out Of Buffalo, Ny On Tuesday.
Visa & Processing Fees
Porterage
Mandatory Tips ($12 Per Person) To Be Given To The Tour Director On The East & $10 Per Person On The West Coast. This Cannot Be Pre Paid.",
		      "name": "Tl 004 : Panorama East & West (Wed & Thurs Departures)- Pnew 2017",
		      "telephone": "+91-9769880881"
		    }
		    </script>
			";i:5;N;}